Nous avons une configuration IDAM légèrement compliquée:
C'est-à-dire que la machine et le navigateur de l'utilisateur final sont assis dans un réseau avec l'AD parent, et notre application basée sur Jetty et l'AD avec lequel il peut parler (AD local) sont assis dans l'autre.
Il existe une approbation bidirectionnelle entre les deux AD. Le navigateur du réseau parent possède le domaine local dans les sites de confiance.
La configuration du serveur Jetty est la suivante:
- il utilise un fichier keytab généré par rapport à un principal dans l'AD local
- il s'exécute en tant que service Windows sous un utilisateur défini dans l'AD local
- le domaine, le mappage domaine-domaine et kdc sont définis par rapport au domaine de l'AD local
- il utilise spnego - isInitiator est défini sur false; doNotPrompt est vrai; storeKey est vrai
Le problème est:
- comme test, l'accès au serveur à partir d'un navigateur à l'intérieur du réseau local (c'est-à-dire lié à l'AD local) fonctionne - les informations de débogage Kerberos apparaissent dans les journaux, je peux voir la négociation Kerberos correcte dans le trafic HTTP et l'utilisateur est connecté automatiquement . Brillant.
cependant , accéder au serveur à partir d'un navigateur à l'intérieur du réseau parent (c'est ainsi que nos utilisateurs feront les choses) ne fonctionne pas! Le navigateur récupère un 401, mais demande ensuite des informations d'identification qui, une fois entrées, donnent un écran vide. Ensuite, cliquer dans la barre d'adresse et appuyer sur Entrée fait l'une des deux choses, selon que les informations d'identification sont pour l'AD distant ou local:
- les informations d'identification AD locales se connectent ensuite correctement, avec Kerberos à partir de zéro dans les journaux (demande GET, réponse 401 nonauth, demande d'en-têtes Kerberos, etc.)
- les informations d' identification à distance AD ne consignent pas (requête GET, 401 réponse unauth, ce qui ressemble à un en- tête NTLM:
Authorization: Negotiate <60 or so random chars>
)
Quoi qu'il en soit, le fait qu'il incite est faux!
Y a-t-il une explication à ces symptômes? La configuration que nous avons peut-elle faire ce que nous voulons?
En ce qui concerne la description ci-dessus, cela pourrait être faux: toute configuration que j'ai mentionnée concernant le serveur Jetty devrait être précise, comme je l'ai fait. Je suis heureux de fournir plus de détails. Toute configuration concernant AD ou le navigateur du réseau parent est potentiellement suspecte, car elle n'est pas sous mon contrôle et j'ai eu la configuration rapportée plutôt que de la voir par moi-même.
la source
Réponses:
Sans voir la capture de paquets, je suppose que le SPN HTTP / www.website.com doit être enregistré sur le compte exécutant l'application. L'équipe des services d'annuaire de Microsoft a un excellent article en plusieurs parties sur ce sujet à l'URL suivante.
https://blogs.technet.microsoft.com/askds/2008/05/29/kerberos-authentication-problems-service-principal-name-spn-issues-part-1/
Exécutez une capture de paquets (netmon, Wireshark) à partir d'un client dans chaque environnement pour identifier le SPN recherché. Une fois cela déterminé, utilisez la cmd setspn pour l'enregistrer sur le compte exécutant l'application.
FWIW, Kerberos ne fonctionne que sur le LAN. Si quelqu'un a besoin d'un accès là où les contrôleurs de domaine ne sont pas accessibles, vous voudrez peut-être envisager un SSO tel que Shibboleth ou ADFS.
EDIT: comme mentionné par @ alex-h , les navigateurs devront être configurés pour s'authentifier silencieusement via Kerberos.
Enfin, il s'agit d'un problème courant avec les déploiements Microsoft Sharepoint. Ils souhaitent que l'authentification unique via Kerberos se fasse en silence une fois que les utilisateurs se sont authentifiés sur le domaine. Ainsi, si les réponses ci-dessus ne résolvent pas votre problème, essayez de consulter leurs forums tels que les suivants:
Kerberos sur Chrome, Safari ou FireFox
la source
Veuillez essayer d'abord à partir d'un navigateur qui ne dispose pas de NTLM activé (Chrome / Firefox). Il semble que le problème est que vous avez activé la pré-authentification et il est possible que l'approbation bidirectionnelle ne soit pas en place.
Pour la pré-authentification, consultez ici https://support.microsoft.com/en-us/kb/2749007 et ici https://hc.apache.org/httpcomponents-client-ga/tutorial/html/authentication.html .
la source