ASP.NET Windows身份验证向应用程序返回错误的用户

时间:2018-05-07 09:45:05

标签: iis windows-authentication iis-8.5

我有两个域AB,每个域都有一个用户Administrator。两个管理员都有不同的objectGuids,SID和密码。 B中的IIS 8.5配置了Windows身份验证(方法协商/ NTLM,禁用扩展安全性,启用了内核模式身份验证)。域B信任域A(单向信任)。

当我现在以A\administrator打开IE,并连接到B中的IIS时,IIS返回给我,登录的用户是B\administrator(应该是A\administrator })。

这是我的代码:

public class UserController : ApiController
{
    // GET api/<controller>
    public User Get()
    {
        var usr = ((WindowsIdentity)User.Identity).User;
        return new User() {
            Name = User.Identity.Name,
            SID = usr==null?"":usr.ToString()
        };
    }
}

此外,IIS日志中也是如此:

2018-05-07 09:19:10 172.17.41.31 GET /winauthtest/User - 80 B\Administrator 172.17.42.11 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+10.0;+WOW64;+Trident/7.0;+.NET4.0C;+.NET4.0E) - 404 0 2 31
  • 这是预期的行为还是错误,如果它是一个错误,在哪里报告错误?
  • 我可以通过更改Windows身份验证设置来修复它,或者我还可以做些什么呢?
  • 您是否知道获取正在访问我的IIS的用户的真实SID的其他任何可能性?

1 个答案:

答案 0 :(得分:1)

OMG,我遇到了同样的问题,你的问题给了我一个暗示,为什么会发生这种情况。因此,在Chrome中运行我的项目会给我一个错误的域名,而在Edge中打开会为我提供正确的域名。我使用Windows身份验证设置了我的项目,似乎Chrome在某种程度上阻止了Windows身份验证。 此链接提供了更多信息。 https://specopssoft.com/blog/configuring-chrome-and-firefox-for-windows-integrated-authentication/

最后,我的另一位同事遇到了同样的问题,我们无法正确解决问题。它会随意行为不端。唯一可行的解​​决方案是重启PC。