Comment trouver si l'authentification NTLM ou Kerberos est utilisé à partir de WWW-Authenticate: Négocier en-tête
Je suis de la programmation d'une application de client .Net qui communique avec le serveur via HTTP.
J'ai une autre demande de mise en mémoire tampon options dans le cas de l'authentification NTLM et Kerberos autorisation.
Comment savoir si l'authentification NTLM ou Kerberos est utilisé? Est-il possible de faire en quelque sorte décoder "WWW-Authenticate: Négocier en-tête"?
OriginalL'auteur IT Hit WebDAV | 2011-04-08
Vous devez vous connecter pour publier un commentaire.
Que vous trouverez la réponse ici.
Réponse courte est:
Si le jeton d'Autorisation commence avec "YII" puis Kerberos est utilisé, mais si elle commence par "TlR" puis Kerberos n'est pas utilisé.
Par exemple Kerberos:
Pas Kerberos:
Également sur les Inspecteurs/Auth onglet, il va dire quelque chose comme "en-Tête d'Autorisation (à Négocier) semble contenir un ticket Kerberos'
Que faire si il commence wit "oY"? stackoverflow.com/q/24454777/498298
Que faire si commence avec un "oS"?
Fiddler se positionne comme un proxy et peut causer de kerberos pour échouer dans certaines situations, ce qui conduirait à un NTLM de repli pour la plupart Négocier les situations. Microsoft m'a conseillé de cela dans un ticket de support dans le passé, quand je PENSAIS que j'avais prouvé que kerberos n'étais pas de travail pour une application particulière. Il est préférable d'utiliser moins intrusive méthodes de journalisation pour inspecter l'en-tête d'autorisation, par exemple la commande "netsh trace": blogs.msdn.com/b/canberrapfe/archive/2012/03/31/...
OriginalL'auteur Taras Kozubski
De l'analyse d'une de Négocier en-tête est en quelque sorte un exercice laborieux car il est construit à l'aide de l'ASN.1 DER.
Cela dit, vous ne pouvez pas nécessairement besoin de décoder ce cependant de faire une bonne hypothèse au sujet de la charge utile. Bien qu'il existe un mécanisme dans GSSAPI pour NTLM (plus de détails ci-dessous), dans mon expérience, les clients ne sont pas réellement l'utiliser, il suffit d'envoyer NTLM en-têtes. Dans mon (certes strictement contrôlée) de l'environnement, si je vois
Authorization: NTLM ...
puis c'est la garantie d'être NTLM. Si je voisAuthorization: Negotiate ...
puis c'est la garantie d'être Kerberos.Strictement parlant, vous devriez regarder dans le mécanisme de liste dans l'en-tête afin de déterminer si le mécanisme a été NTLM ou Kerberos. Je recommande ce soit à l'aide d'un hors-the-shelf de l'ASN.1 décodeur, ou en regardant Microsoft exemple de décodage. Vous allez vouloir regarder pour le SPNEGO OID (
1.3.6.1.5.5.2
), puis recherchez le mécanisme type de séquence dans laquelle. Le premier mécanisme dans la séquence correspond à la réponse jeton de charge utile, de sorte que vous pouvez regarder à l'OID de déterminer le mécanisme. Certains connus des Oid pour Kerberos sont:À ma connaissance, le seul OID pour l'authentification NTLM est (en référence à ce blog):
c'est pourquoi j'ai suggéré de l'analyse du mécanisme de la liste.
et si il y a un peu plus trivial manière à déterminer le mécanisme que par l'analyse correctement, alors que ce serait utile de connaissances à avoir. N'est-ce pas ce que fiddler est en train de faire?
Il y a aussi un OID pour NegoEx: 1.3.6.1.4.1.311.2.2.30. Ce est utilisé pour étendre "autorisation de négocier" des en-têtes à l'appui de nouveaux protocoles.
faux="Si je vois Autorisation: à Négocier ... puis c'est la garantie d'être Kerberos"
OriginalL'auteur Edward Thomson
Si le serveur fait de la publicité à l'utilisateur de Négocier, vous êtes libre de les utiliser Kerberos, NTLM oder quelque chose est pris en charge par SPNEGO. Cependant, il n'ya aucune garantie que le serveur prend en charge tous enveloppé auth méthode envoyé par le client.
OriginalL'auteur Michael-O
Oui; juste Base64 décoder et vous verrez "NTLM" ou de "HTTP".
C#
OriginalL'auteur user1133275