远程访问时出现ASP.NET模拟错误

时间:2016-02-29 08:32:14

标签: asp.net impersonation

我有一个网站,它托管在我网络服务器上的IIS上。该网站使用以我的用户名运行的应用程序池。我的用户名在服务器的管理员组中。

禁用匿名身份验证时启用Windows身份验证。此外,还启用了ASP.NET模拟。

我通过添加以下行在web,config中启用了模拟:

user_profile, created = UserProfile.objects.get_or_create(user=profile.user)

我还通过添加以下行在web.config中启用了Windows身份验证:

<identity impersonate="true" />

该页面包含用于在Page_Load:

中打开与数据库的连接的代码
<authentication mode="Windows" />

当我在服务器上的浏览器中打开页面时,页面工作正常。当我使用相同的URL并从我的机器打开它时,我收到以下错误。请注意,其他不使用模拟的网站在我将它们托管在同一台服务器上并从我的机器上访问时,通常会正常工作。

我得到的错误是:

  用户&#39; NT AUTHORITY \ ANONYMOUS LOGON&#39;

登录失败

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

这可能是两件事:

  1. 您的浏览器不使用Kerberos,而是使用NTLM。由于目标既不获取Kerberos票证也不获取用户密码,因此无法对数据库进行身份验证。您可以使用Kerberos约束委派或在同一台计算机上启用它 - 允许IIS进程在本地模拟任何用户。
  2. 您的数据库位于另一台主机上:您必须使用Kerberos约束委派。
  3. 只是为了清楚起见:如果您的ADDC不是公开可用的(他们最好不要),那么您将无法通过Kerberos进行身份验证。
    NTLM可能会放松这个问题,但它通常会遇到不同浏览器的问题 - 也就是:不使用NTLM - 从IIS中删除该提供程序 - NTLM已经死了。