web-dev-qa-db-fra.com

Authentification HTTP de base - quelle est l'expérience attendue du navigateur?

Quand un serveur autorise l'accès via une authentification HTTP de base, quelle expérience attend-on du navigateur?

Je fais généralement cela avec curl:

curl -u myusername:mypassword http://somesite.com

Et ça marche très bien. Cependant, pour le moment, je n'ai pas accès à curl (longue histoire) et je souhaite le faire depuis le navigateur Web, si possible.

Je pensais que la manière dont l'authentification de base était censée fonctionner était la suivante: je tape l'URL que je veux, le serveur décide alors que je ne suis pas autorisé, retourne le code de réponse 401 et je tape mon nom d'utilisateur et mon mot de passe dans une invite. Si c'est correct, la page se charge!

Cependant, sur somesite.com, je ne reçois pas d’autorisation d’autorisation, mais juste une page qui dit que je ne suis pas autorisé. Certains sites n’ont-ils pas implémenté correctement le flux de travail de l’authentification de base ou dois-je faire autre chose?

245
bpapa

Pour aider tout le monde à éviter la confusion, je reformulerai la question en deux parties.

Premièrement: "Comment faire une requête HTTP authentifiée avec un navigateur, en utilisant l’authentification BASIC?" .

Dans le navigateur, vous pouvez commencer par effectuer une authentification de base http en attendant l'invite ou en modifiant l'URL si vous suivez le format suivant: http://myusername:[email protected]

NB: la commande curl mentionnée dans la question convient parfaitement, si vous avez une ligne de commande et que curl est installé. ;)

Références:

Toujours selon la page de manuel CURL https://curl.haxx.se/docs/manual.html

HTTP

  Curl also supports user and password in HTTP URLs, thus you can pick a file
  like:

      curl http://name:[email protected]/full/path/to/file

  or specify user and password separately like in

      curl -u name:passwd http://machine.domain/full/path/to/file

  HTTP offers many different methods of authentication and curl supports
  several: Basic, Digest, NTLM and Negotiate (SPNEGO). Without telling which
  method to use, curl defaults to Basic. You can also ask curl to pick the
  most secure ones out of the ones that the server accepts for the given URL,
  by using --anyauth.

  NOTE! According to the URL specification, HTTP URLs can not contain a user
  and password, so that style will not work when using curl via a proxy, even
  though curl allows it at other times. When using a proxy, you _must_ use
  the -u style for user and password.

La deuxième et vraie question est "Cependant, sur somesite.com, je ne reçois pas d’autorisation d’autorisation, mais juste une page qui dit que je ne suis pas autorisé. Le flux de travail d’authentification de base est correct correctement ou y at-il autre chose à faire? "

La documentation de Curl indique que l’option -u prend en charge de nombreuses méthodes d’authentification, Basic étant la valeur par défaut.

151
Nicocube

As-tu essayé ?

curl somesite.com --user username:password
66
daronwolff

Vous avez peut-être un ancien nom d'utilisateur/mot de passe invalide mis en cache dans votre navigateur. Essayez de les effacer et vérifiez à nouveau.

Si vous utilisez IE et que somesite.com se trouve dans votre zone de sécurité Intranet, IE envoie peut-être automatiquement vos informations d'identification Windows.

15
AUSteve

WWW-Authenticate header

Vous pouvez également l'obtenir si le serveur envoie un code de réponse 401 mais ne définit pas correctement l'en-tête WWW-Authenticate - je devrais le savoir, je viens de corriger cela dans son propre code car VB applications n'étaient pas disponibles. faire apparaître l'invite d'authentification.

7
Chris McCauley

S'il n'y a pas d'informations d'identification fournies dans les en-têtes de requête, voici la réponse minimale requise pour IE to Demander à l'utilisateur des informations d'identification et resoumettre la demande.

Response.Clear();
Response.StatusCode = (Int32)HttpStatusCode.Unauthorized;
Response.AddHeader("WWW-Authenticate", "Basic");
6
Chris Hinch

Vous pouvez utiliser Postman, un plugin pour chrome. Il donne la possibilité de choisir le type d'authentification dont vous avez besoin pour chacune des demandes. Dans ce menu, vous pouvez configurer l'utilisateur et le mot de passe. Postman traduira automatiquement la configuration en un en-tête d’authentification qui sera envoyé avec votre demande.

5
Mgccon