Kerberos授权不适用于Chrome和FireFox,但适用于IE

zhufeizzz

我遵循此指南将cas与Windows AD集成。

几天前,它可以在每种浏览器上正常运行。但它不仅仅在IE上有效,当我使用firefox浏览器时,仅将“协商TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw ==“发送到服务器”,然后浏览器返回cas登录页面。

最近仅在生产环境中发现了此问题。我有一个具有相同配置的测试环境,但是到目前为止它仍然可以正常工作。

我知道当kerberos票证未在本地缓存时,浏览器将发送“ Negotiate TlRMT ...”。但是我可以使用klist命令看到票证,它可以在IE上运行,这意味着票证还可以。

我想这可能是Windows客户端或广告服务器的某些配置引起的,有人可以给我一些建议吗,tks!

https://1056-app.test.com ”已经添加到firefox上的“ network.negotiate-auth.trusted-uris”中。而且我还试图重新安装Firefox,无法正常工作。

铬:55

IE:11

火狐:56

Clinet浏览器操作系统:Windows 7

AD Server操作系统:Windows Server 2008 R2

Cas Server操作系统:Suse11Sp3

这是FireFox上的http转储

GET https://1056-app.test.com/cas/login 401 Unauthorized

Response Headers
Server : nginx/1.8.0
Date : Fri, 13 Oct 2017 10:38:08 GMT
Content-Type : text/html;charset=UTF-8
Transfer-Encoding : chunked
Connection : keep-alive
Pragma : no-cache
Expires : Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control : no-cache
WWW-Authenticate : Negotiate
Content-Language : en-US
Content-Encoding : gzip
Vary : Accept-Encoding

Request Headers
Host : 1056-app.test.com
User-Agent : Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0
Accept : text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language : en-US,en;q=0.5
Accept-Encoding : gzip, deflate, br
Cookie : JSESSIONID=EE40B3C3FAFB30D13F45DC612E4D383ECC95916DBE12BEDDE21E9D933893964A4EB867271389530BC8A4B6E9B485E944B952
Connection : keep-alive
Upgrade-Insecure-Requests : 1




GET https://1056-app.test.com/cas/login 401 Unauthorized

Response Headers
Server : nginx/1.8.0
Date : Fri, 13 Oct 2017 10:38:08 GMT
Content-Type : text/html;charset=UTF-8
Transfer-Encoding : chunked
Connection : keep-alive
Pragma : no-cache
Expires : Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control : no-cache
Content-Language : en-US
Content-Encoding : gzip
Vary : Accept-Encoding

Request Headers
Host : 1056-app.test.com
User-Agent : Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0
Accept : text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language : en-US,en;q=0.5
Accept-Encoding : gzip, deflate, br
Cookie : JSESSIONID=EE40B3C3FAFB30D13F45DC612E4D383ECC95916DBE12BEDDE21E9D933893964A4EB867271389530BC8A4B6E9B485E944B952
Connection : keep-alive
Upgrade-Insecure-Requests : 1
Authorization : Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==

客户端上的klist

Client: huangq @ SWI.TEST.NET
Server: HTTP/1056-app.test.com @ SWI.TEST.NET
KerbTicket Encryption Type: RSADSI RC4-HMAC(NT)
Ticket Flags 0x40a00000 -> forwardable renewable pre_authent
Start Time: 10/13/2017 12:52:34 (local)
End Time:   10/13/2017 22:11:01 (local)
Renew Time: 10/20/2017 12:11:01 (local)
Session Key Type: RSADSI RC4-HMAC(NT)

在客户端上的setspn -Q cmd

C:\Users\huangq>setspn -Q HTTP/1056-app.test.com
Checking domain DC=swi,DC=test,DC=net
CN=SOWSLdapA,OU=Service,OU=_Users,DC=swi,DC=test,DC=net
    HTTP/1056-app.test.com
Existing SPN found! 

keytab创建命令

ktpass.exe /out D:\\1056-app.keytab /princ HTTP/[email protected] /pass xxx /mapuser [email protected] /ptype KRB5_NT_PRINCIPAL /crypto RC4-HMAC-NT
zhufeizzz

已找到根本原因。因为我们将cname用于dns,所以cname与spn地址不匹配。

我使用此命令打开firefox协商调试日志。链接

set NSPR_LOG_MODULES=negotiateauth:5
set NSPR_LOG_FILE=C://firefox.log
./firefox.exe

firefox.log

[Lazy Idle]: D/negotiateauth   Sending a token of length 9800
[Main Thread]: D/negotiateauth   service = 1056-app.test.com
[Main Thread]: D/negotiateauth   using negotiate-sspi
[Main Thread]: D/negotiateauth   nsAuthSSPI::Init
[Main Thread]: D/negotiateauth Using SPN of [HTTP/***-nginx-elb-***.eu-west-1.elb.amazonaws.com]

解:

1.将DNS更改为A类型

2.修改浏览器以禁用kerberos cname查找。Chrome链接Firefox不支持。

参考:

https://www.chromium.org/developers/design-documents/http-authentication

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

CSS @ font-face不适用于Firefox,但适用于Chrome和IE

jQuery Javascript仅适用于chrome和firefox,不适用于IE

jQuery touch Punch适用于Chrome和Firefox,但不适用于IE

会话不适用于 chrome,但适用于 Firefox

按钮不适用于Firefox,但适用于Chrome

Flexbox 不适用于 Chrome,适用于 Firefox

带load()的jquery-issue:适用于Firefox和Safari,不适用于Chrome,Opera和IE

JavaScript UTC 到本地时间的转换不适用于 IE 和 Firefox,但适用于 Chrome

CSS规则适用于IE,但不适用于Chrome / Firefox

jQuery 单击事件适用于 Chrome,而不适用于 Firefox 或 IE

@ font-face不适用于Firefox和IE

jQuery代码不适用于IE和Firefox

CSS-@media不适用于Firefox和IE

AJAX 成功不适用于 IE 和 Firefox

硒不适用于Firefox或Chrome

datepicker不适用于FF和chrome,但适用于IE

Socket.IO适用于Firefox和Edge,但不适用于Chrome吗?

自定义元素适用于Safari,但不适用于Firefox和Chrome

JS适用于Firefox和Safari,但不适用于Chrome。这是我的网站

适用于chrome,但不适用于Firefox,Eventlistener,appendChild和style.backgroundColor

表格中网址的自动换行适用于chrome和safari,不适用于Firefox

单击切换适用于 Chrome 和 Safari 但不适用于 Firefox?

表单验证不适用于Chrome和Firefox

CSS不适用于IE和Firefox,但可在Chrome中使用

MVC5和OWIN facebook身份验证提供程序不适用于IE11和Firefox(但适用于Chrome)

脚本仅适用于 Chrome 和 Firefox 桌面,不适用于 Safari 和任何移动浏览器

授权不适用于用户搜索

SSL适用于Chrome,但有时适用于Firefox,不适用于IOS,Android或Blackberry

动态填充下拉列表的Ajax调用适用于FF,但不适用于Chrome和IE