34 votes

Que dois-je passer pour l'en-tête WWW-Authenticate sur les 401 si j'utilise uniquement OpenID?

La spécification HTTP états:

10.4.2 401 non autorisé

La demande nécessite une authentification de l'utilisateur. La réponse DOIT inclure un WWW-Authenticate champ d'en-tête (section 14.47) contenant un défi applicable à la ressource demandée.

Si la connexion que je soutien est OpenID (ou CAS ou OAuth jetons, &c.), que dois-je mettre dans ce champ? Qui est, comment puis-je indiquer que le client a besoin de pré-authentification et de créer une session plutôt que d'essayer d'envoyer des informations d'identification avec chaque demande?

Avant de répondre, "ne pas envoyer un 401; envoyer un 3xx de la rediriger vers le OpenID login page," à propos de la non-clients HTML? Comment, par exemple, de Dépassement de Pile à faire une API que mon logiciel sur mesure peuvent-ils interagir avec?

26voto

Chris Boyle Points 6194

Selon RFC2617, le auth-scheme peut être n'importe quoi; si vous voulez vraiment un 401, vous ne cassez pas techniquement les spécifications en créant quelque chose comme WWW-Authenticate: OpenID realm="My Realm" location="http://my/login/location" . Cela dit, le comportement du code des autres lorsque vous faites cela n'est bien sûr pas défini. :-)

3voto

Andrew Arnott Points 35346

Il existe une spécification OAuth Discovery qui indiquerait quoi mettre dans l'en-tête WWW-Authenticate - si la spécification n'était pas obsolète sans spécification de remplacement pour le moment.

-4voto

grawity Points 6338

403 Interdit pourrait être une réponse alternative pour les erreurs "Accès refusé".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X