ASP.NET标识+;Windows身份验证(混合模式-窗体和Windows)
在问这个问题之前,我已经尽了最大的努力在网上搜索了一下。我在stackoverflow上看到过类似的问题,但是,很长一段时间以来都没有令人满意的答案。这是再次尝试回答这个反复出现的问题 问题 如何构建一个ASP.NET MVC 5网站,该网站对内部网用户使用“Windows Auth”,对Internet用户使用“Forms Auth”?我们希望使用ASP.NET标识来实现这一点。此外,我们不希望使用Active Directory组进行授权。对于Intranet用户,我们希望使用Active Directory对他们进行身份验证,然后使用ASP.NET标识来管理他们的角色和其他配置文件数据 如果我们不要求最终用户选择auth方法,那就太好了。web应用程序应该无缝地登录intranet用户。他们甚至不应该知道有一个登录屏幕。同样,不应该要求互联网用户输入他们的域凭据。他们应该立即看到基于表单的登录屏幕 有什么推荐的解决方法吗?或者,您是否可以评论以下任何一种是正确的解决方案 仅供参考这是2004年的文章,现在可能没有帮助:ASP.NET标识+;Windows身份验证(混合模式-窗体和Windows),asp.net,asp.net-mvc,asp.net-identity,windows-authentication,Asp.net,Asp.net Mvc,Asp.net Identity,Windows Authentication,在问这个问题之前,我已经尽了最大的努力在网上搜索了一下。我在stackoverflow上看到过类似的问题,但是,很长一段时间以来都没有令人满意的答案。这是再次尝试回答这个反复出现的问题 问题 如何构建一个ASP.NET MVC 5网站,该网站对内部网用户使用“Windows Auth”,对Internet用户使用“Forms Auth”?我们希望使用ASP.NET标识来实现这一点。此外,我们不希望使用Active Directory组进行授权。对于Intranet用户,我们希望使用Active
一种可能的方法是在IIS中创建两个站点,但具有相同的目标文件夹,其中包含站点源。例如,第一个站点用于启用Windows身份验证模式并绑定到80端口的内部用户,而第二个站点用于启用匿名模式并绑定到8080端口的外部用户。然后,在防火墙上,您必须配置NAT,所有来自本地网络或VPN的请求将重定向到端口80上的本地IIS服务器,所有来自Internet的请求将重定向到IIS服务器的端口8080。您想从一个URL处理表单和广告身份验证吗?我使用了thinktecture(基于声明的身份验证)作为WIF和封送各种形式的身份验证的框架。然而,要从一个URL处理if,我必须在登录时处理一些逻辑,将用户与基于广告或表单的链接关联起来。在最近的一个项目中,当我们创建用户帐户时,这是在用户管理中处理的(它与表单Auth的广告相关联)。然后,当用户登录时,他们会将广告域名作为登录的一部分。有很多方法可以实现这一点,这只是我使用过的方法之一。例如,不需要域,只需使用用户名,然后检查用户名上的广告或基于表单的标志,然后相应地处理身份验证 编辑
只是重新阅读你的问题的更新。internet用户和intranet用户是否相同?如果是这样的话,你只需要进行全面的基于表单的身份验证,并独立于广告管理产品数据库中的用户。如果他们是相同的,那么他们可以在域名之前登录到用户名。如果您想完全依赖AD.这一术语是混合模式认证。我已经做过很多次了。你只需要调整你的主站点。我是这样做的 保持主MVC站点不变,但以匿名方式运行,而不是在Windows Auth下运行 内部站点 创建重定向URL站点:将此站点设置为Window Auth,以便您可以从Active Directory中提取用户ID。为您的用户提供此URL和/或使其成为他们在您的Intranet上单击的链接。然后,该站点调用MVC站点并传递用户凭据(登录id) a。这可以通过URL上的加密字符串或cookie中的加密值来完成。您也可以使用过期日期/时间值进行加密 b。(从Forms Auth发言)使用该用户ID创建Forms身份验证票证。运行您拥有的任何其他登录逻辑。完成了
外部站点-无需更改。让用户按原样登录。为什么不将您的网站代码放在服务器上,将其自动复制到两个单独的网站上,然后通过配置web.config来处理身份验证中的更改。(一个是匿名设置,另一个是windows身份验证。)
它不像其他方法那样时髦,但相对来说比较无痛。有两个网站,但内容(除了web.config)是相同的。我前一段时间在我以前的工作中做过这方面的概念验证,所以细节不清楚,我没有任何代码可供参考 这些要求是:
- 用于内部(LAN)和外部(internet)访问的单一URL
- 两种类型的用户,域上的用户和外部(非广告)用户
- 域用户内部和外部的Windows身份验证
- 使用iPad时能够输入域登录详细信息(无windows身份验证)
唯一的另一件事是在正常登录表单中添加广告电子邮件/密码检查,这样,如果域用户从非windows设备(iPad)访问该站点,那么他们就可以使用其正常登录详细信息。IIS配置
在IIS中为整个站点启用匿名身份验证状态,并为根目录下的某些文件夹(例如,/WindowsLogin)启用Windows身份验证。在此文件夹中放置aspx文件(用于WebForms项目)或创建ApiController(用于MVC项目) 站点设置
日志