我需要为同时在 Intranet 和 Internet 上使用的应用程序实现类似 Single Sign On 的功能。现在,该应用程序使用自己的表来存储用户信息,并且拥有的用户比公司的 AD 中的用户多。示例合同工/第 3 方供应商等,因此许多不属于域的 Active Directory 的用户都列在用户表中。
该应用程序有点旧,目前它使用表单来验证用户。但奇怪的是,web.config 文件中的身份验证模式有以下身份验证条目。<authentication mode="None" />
我在 web.config 中将身份验证模式更改为 Windows,在 IIS 6 中选择了集成 Windows 身份验证并取消选中匿名访问。
现在我有以下两种情况。
#1 Intranet
用户使用存储在 AD 中的系统凭据登录系统现在,如果用户点击 Web 应用程序的链接,他应该登录。我已经通过在页面加载中使用 Page.User.Identity.name 实现了这部分login.aspx 检查用户是否存在于数据库中。
#2 Internet
如果我从外部网络检查它,浏览器会提示我输入凭据。
要求是不应提示用户输入凭据,而应显示当前登录页面
我用谷歌搜索,每次都在 stackoverflow 上结束。可悲的是,这些解决方案对我来说并不奏效。
我偶然发现了 Scott在 Intranet ASP.NET Web 应用程序中启用 Windows 身份验证的这篇文章,如果您查看评论,Scott 指的是评论者使用解决方案ripster
,以防应用程序从 Internet 和 Intranet 访问。虽然它对我没有效果,或者可能是我没有正确地做到这一点。