我有一个包含2个站点的IIS 7服务器 - site1,site2。
site1绑定端口80,site2绑定端口81。
我在site2中有一个网页,它通过$.ajax()
向网站1中的网址发送http get请求。
我已将两个网站配置为使用kerberos:
仅启用Windows身份验证,仅选择协商:提供商中的kerberos。
为AD中的用户/服务器配置了SPN。
我使用fiddler来监控请求标头。
当我使用IE8时,我发现kerberos票据是通过2-hop从site2委派给site1的,这是kerberos的工作方式。
当我使用chrome时,我看到没有委托keberos票证。我收到401错误。
我尝试过设置:
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"AuthNegotiateDelegateWhitelist"="*"
...(特别是服务器名称),但它没有用。
有什么想法吗?
答案 0 :(得分:2)
我必须为此密钥添加相同的注册表值才能使一切正常运行:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Chromium
另外有趣的是我正在使用* .domain.local而不是*。
答案 1 :(得分:0)
您输入的值是否包含引号?
尝试输入*
,不带引号。
完全关闭Chrome(检查任务管理器以确保),然后重试。
如果您将"*"
与引号一起使用,则无效。
答案 2 :(得分:0)
鉴于我们现在拥有Edge Chromium。运行下面的注册表脚本将为两种浏览器修复
Windows注册表编辑器5.00版
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Edge] “ AuthNegotiateDelegateAllowlist” =“ *”
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Google \ Chrome] “ AuthNegotiateDelegateWhitelist” =“ *”
我从注册表中提取了两个注册表项,其中注册表中的*都没有引号,但是提取的注册表项看起来与我上面发布的完全相同
答案 3 :(得分:0)
只有在我使用AuthNegotiateDelegateWhitelist密钥在ouple中添加AuthServerWhitelist密钥后,此方法才起作用。
我的注册表脚本现在看起来像这样:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"AuthServerWhitelist"="*"
"AuthNegotiateDelegateWhitelist"="*"