J'essaie d'accéder à un site protégé par mot de passe. Il n'utilise pas l'authentification de base (même si la même boîte utilisateur/passe apparaît dans firefox) car l'en-tête de réponse est WWW-Authenticate: Negotiate
.
Je souhaite automatiser le processus de connexion en envoyant l'en-tête correct.
En base, vous utiliseriez quelque chose comme:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Que devrais-je utiliser pour négocier?
Le serveur Web vous demande un jeton SPNEGO ( Mécanisme de négociation GSSAPI simple et protégé ).
Il s'agit d'une invention de Microsoft pour négocier un type d'authentification à utiliser pour l'authentification unique Web (authentification unique):
Voir:
Mettre ces informations ici pour le bénéfice des futurs lecteurs.
en-tête de réponse 401 (non autorisé) -> en-tête d'authentification de demande
Voici plusieurs WWW-Authenticate
en-têtes de réponse . (La liste complète est à IANA: Schémas d'authentification HTTP .)
WWW-Authenticate: Basic
-> Autorisation: Basic + token - Utiliser pour l'authentification de baseWWW-Authenticate: NTLM
-> Autorisation: NTLM + token (2 défis)WWW-Authenticate: Negotiate
-> Autorisation: Négocier + jeton - utilisé pour l'authentification Kerberos Negotiate
: Ce schéma d'authentification viole à la fois la sémantique HTTP (étant orientée connexion) et la syntaxe (utilisez de syntaxe incompatible avec la syntaxe du champ d'en-tête WWW-Authenticate and Authorization) Vous pouvez définir le Authorization: Basic
en-tête uniquement lorsque vous avez également le WWW-Authenticate: Basic
en-tête sur votre défi 401.
Mais puisque vous avez WWW-Authenticate: Negotiate
cela devrait être le cas pour l'authentification basée sur Kerberos.