2017-10-14 13 views
3

Je suis le guide pour intégrer cas avec Windows AD.L'autorisation Kerberos ne fonctionne pas sur Chrome et FireFox, mais fonctionne sur IE

Cela fonctionne très bien sur tous les navigateurs il y a quelques jours. Mais pas seulement il fonctionne sur IE, quand j'utilise Firefox navigateur seulement envoyer "Négocier TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw ==" au serveur, puis le navigateur retourner à la page de connexion cas.

Ce problème n'a été détecté que récemment dans l'environnement de production. J'ai un environnement de test avec la même configuration, mais ça fonctionne bien jusqu'à présent.

Je sais que lorsque le ticket kerberos n'est pas mis en cache en local, le navigateur envoie "Negotiate TlRMT ...". Mais je peux voir ticket avec la commande klist, et cela fonctionne sur IE signifie que le ticket est ok.

Je suppose que c'est probablement dû à une certaine configuration du client Windows ou du serveur publicitaire, quelqu'un pourrait-il me donner quelques conseils, tks!

"https://1056-app.test.com" ont déjà ajouter à "network.negotiate-auth.trusted-uri" sur Firefox. Et j'ai également essayé de réinstaller firefox, pas fonctionne.

Chrome: 55

IE: 11

FireFox: 56

Clinet Browser OS: Windows 7

AD serveur OS: Windows Server 2008 R2

Cas serveur OS : Suse11Sp3

est ici la décharge http sur FireFox

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 sur le client

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 sur le client

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 commande create

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

Vous avez omis de mentionner votre version de Windows AD et le type d'OS CAS est en cours d'exécution sur. –

+1

Exécutez la commande suivante et collez les résultats complets: * setspn -Q HTTP/1056-app.test.com * –

+0

ajouté, tks for reply. – zhufeizzz

Répondre

4

La cause a été trouvée. Parce que nous utilisons cname pour dns, et cname ne correspond pas à l'adresse spn. J'utilise cette commande pour ouvrir le journal de débogage de firefox negotiate. link

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] 

Solution:

1.Remplacez DNS par un type

2.Modifiez le navigateur pour désactiver la recherche de nom de domaine kerberos. Chrome link. Firefox ne supporte pas.

Référence:

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