【发布时间】:2014-05-21 14:08:47
【问题描述】:
我开发了一个应用程序来允许 Windows 身份验证并将其托管到实时服务器。在我的本地电脑中,我可以获得用户名密码。但是当我从网络(例如 websso.mydomain.com)访问时,即使我输入了正确的凭据,它也会不断询问凭据。
<authentication mode="Windows">
</authentication>
<authorization>
<deny users="?" />
</authorization>
<identity impersonate="true"/>
我在 web.config 中添加了上面的标签,托管服务器是 windows server 2008 R2。我试图从
获取用户名WindowsIdentity.GetCurrent().Name
Environment.Username
Request.ServerVariables["LOGON_USER"]
Request.ServerVariables["AUTH_USER"]
HttpContext.Current.Request.LogonUserIdentity.Name
是否需要在 IIS 中进行任何更改或配置 Windows 身份验证需要遵循的任何步骤。
安装的 IIS 版本是 7.5
【问题讨论】:
-
看起来您遇到了 kerberos 身份验证问题... ISS 的 Windows 身份验证属性中有哪些提供程序处于活动状态?如果您对纯 NTLM 身份验证没问题,请尝试摆脱除 IIS 中 Windows 身份验证设置的 NTLM 身份验证提供程序之外的所有其他身份验证提供程序。如果必须使用 kerberos,则需要注册一些 SPN,以防应用程序池在技术域帐户下运行。还要确保用户至少对 Web 目录具有读取权限
-
我使用了 NTLM 身份验证,并已设置在最前面。我想知道我需要做更多的配置吗?还是必须为特定组分配访问权限?
-
尝试删除除 NTLM 之外的所有其他提供程序,然后重新启动 IIS。这可能会有所帮助。还可以尝试在网站目录上将 Read&Execute 授予“Authenticated Users”。
-
我按照你的建议做了同样的事情,我现在添加了一个标签
但仍然是相同的响应。 -
你应该把这些用户放在文件系统上。为了使其正常工作,请尝试在 web.config 中进行以下更改:
<system.web> <authentication mode="Windows" /> <authorization> <allow users="*" /> <deny users="?" /> </authorization> </system.web>
标签: c# asp.net windows-authentication