使用集成的Windows身份验证和从Internet访问应用程序时,避免身份验证需要弹出窗口

时间:2013-05-06 05:52:35

标签: asp.net login windows-integrated-auth

我需要为Intranet和Internet上使用的应用程序实现单点登录等功能。 现在,该应用程序使用自己的表来存储用户信息,并且具有更多用户,而不是AD中为公司提供的用户。示例合同工/第三方供应商等因此许多不属于域Active域的用户列在用户表中。

应用程序有点旧,目前它使用Form来验证用户。 但奇怪的是,web.config文件中的身份验证模式具有以下用于身份验证的条目。 <authentication mode="None" />

我在web.config中将身份验证模式更改为Windows,并在IIS 6中选择了集成Windows身份验证,并取消选中匿名访问。

现在我有以下两种情况。

#1 Intranet
用户使用存储在AD中的System Credential登录系统 现在,如果用户点击Web应用程序的链接,他应该登录。 我已经通过在login.aspx的Page load中使用Page.User.Identity.name来实现此部分,以检查用户是否存在于数据库中。

#2 Internet
如果我从外部网络检查它,浏览器会提示我输入凭据 要求是不应提示用户输入凭据,而应显示当前的登录页面

我google了,每次都在stackoverflow上结束。可悲的是,这些解决方案对我来说并不奏效。

我偶然发现了Scott Enabling Windows Authentication within an Intranet ASP.NET Web application 的这篇文章,如果你查看评论,Scott指的是评论者ripster使用解决方案,以防从互联网和内部网访问应用程序。虽然它对我不起作用,或者可能是我没有做好。

对此有任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您似乎需要混合使用Windows和Forms身份验证:要求是不应提示用户输入凭据,而应显示当前的登录页面

想分享这个。可能它可以帮助你,因为大多数我看到人们喜欢下面提到的第二个解决方案很多。 (当他们阅读时至少。)

如果您处于经典模式 - 您可以同时使用Windows和Forms身份验证。将弹出警告

Challenge-based and login redirect-based authentication cannot be used 
simultaneously
但是,你可以忽略这个警告。 CarlosAg说:

we decided to leave it there was because it is still behavior that many user 
scenarios  would be consider incorrect, since most of the time forms 
authentication  uses anonymous  authentication and not windows.

阅读here.

现在,当您想要使用集成模式时,此堆栈问题:iis7 Challenge-based and login redirect-based authentication cannot be used simultaneously会导致此着名链接:http://mvolo.com/iis-70-twolevel-authentication-with-forms-authentication-and-windows-authentication/,它允许更改页面的身份验证方式。 使用Windows身份验证时,另一种管理方法是使用代码管理用户名:

string user = Request.ServerVariables["LOGON_USER"];

请参阅此链接:http://beensoft.blogspot.in/2008/06/mixing-forms-and-windows-authentication.html,它提供了一种混合表单和Windows身份验证的不同方法。