我有一个使用Windows身份验证的ASP.NET / MVC网站。
在IIS端,它设置为仅允许Windows身份验证。
web.config端配置为仅允许Windows身份验证:
<authentication mode="Windows" />
<authorization>
<allow verbs="OPTIONS" users="*" />
<deny users="?" />
</authorization>
<identity impersonate="true" />
问题在于有时候(取决于用户[这很奇怪,但可能只是随机],在1到50%的时间内),而不是按预期加载页面,浏览器(Chrome和IE的行为)相同的)将显示登录提示,而不是以无缝方式记录用户。
我无法确定以任何方式强行推送它,如果用户不断刷新同一页面,在同一浏览器中,它将最终工作(如果用户获得了登录提示第一个地方),或显示提示。
编辑:
我在IIS中激活了Failed Request Tracking
。我可以看到所有查询都失败,错误代码为401.2,这是预期的,因为禁用了匿名身份验证。
第一个响应在其标题中包含已接受的身份验证模式:
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
对于大多数请求,下一个请求用于验证用户身份,一切正常。
当身份验证失败并显示登录提示时,下一个请求是401.1,并显示错误消息:
Indicates a particular Security ID may not be assigned as the label of an object. (0x80070513)
我不知道造成这种行为的原因,更不知道如何解决这个问题。
答案 0 :(得分:0)
可能是重复的SPN问题。如果是,我相信您的应用程序在NTLM下运行而不是协商(kerberos)。
你可以在这里测试几件事。
从客户端捕获fiddler跟踪。如果身份验证令牌以TIRM ...开头,则为NTLM而不是kerberos。
另外,请分享以下信息。
这是负载均衡的环境吗?
您是否使用自定义域名或服务器名称访问该网站?
您的应用程序池的运行状态是什么。