站点的 MVC 3 Windows 身份验证(具有表单身份验证的区域除外)
我有一个使用 Windows 身份验证的 Intranet 应用程序,效果很好。现在我需要公开一个 Api 区域。该区域应该使用基本身份验证,但为了简单起见,我首先尝试使该区域允许匿名。
我使用的是 IIS 7.5,它的配置如下:
IIS >我的内联网站点 >认证>启用 Windows 身份验证, 其他一切均已禁用
在应用程序根 web.config 中
<authentication mode="Windows"></authentication>
我所有的 Intranet 控制器(Api 区域除外)都继承自具有 AuthorizeAttribute 的 BaseController
我尝试
<location path="~/Api">
<system.web>
<authentication mode="None" />
</system.web>
</location>
在 API 区域的 web.config 中添加,但没有继续,仍然得到提示以获得凭据。
我的应用程序结构如下所示
-IntranetApp
--Controllers
--Areas
----Area1
----Area2
----Api
除 Api 区域外,所有应用程序都应使用 Windows 身份验证。
感谢您的任何帮助/指点。
I have an intranet application using windows authentication that works great. Now I have a requirement to expose an Api area. This area should use basic authentication but to keep things easy I am first just trying to make this area allowed to anonymous.
I am using IIS 7.5 and it is configured like this:
IIS > My Intranet Site > Authentication > Windows Authentication Enabled,
everything else Disabled
in the application root web.config I have
<authentication mode="Windows"></authentication>
All the intranet controllers (except for Api Area) inherit from a BaseController that have an AuthorizeAttribute
I tried adding
<location path="~/Api">
<system.web>
<authentication mode="None" />
</system.web>
</location>
In the web.config for the API area, but no go, still get prompted for credentials.
My application structure looks like this
-IntranetApp
--Controllers
--Areas
----Area1
----Area2
----Api
All should be using Windows Authentication except for Api area.
Thanks for any help/pointers.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不知道细节,但我看到“混合”身份验证完成的方式是两个 Web 应用程序。启用 Windows 身份验证的网站将使用 ASP 成员资格 API 来验证用户身份(并在必要时使用域帐户中的信息自动创建用户名),然后重定向到另一个站点。两个站点的成员资格配置共享相同的应用程序 ID、密钥等。
您可能会遇到这种情况:
“您无法在单个应用程序中实现此目的,因为在 IIS 中,一旦您为虚拟目录设置了 Windows 身份验证,它将不再接受来自以下位置的用户:不同的领域。”
有关设置此版本之一的更多信息,请参阅此内容:
ASP.NET MVC 和混合模式认证
I don't know details, but the way I've seen "mixed" authentication done is two web applications. The one with windows authentication enabled will then use the ASP membership API to authenticate the user(and automatically create a username if necessary using information from domain account) and then redirect to the other site. Both site's membership config share the same application ID, keys, etc.
You are probably running into this:
"you cannot achieve this within a single application because in IIS once you set up Windows authentication for a virtual directory it will no longer accept users from different domains."
See this for more information on setting up one version of this:
ASP.NET MVC and mixed mode authentication