2009-06-02 9 views
32

Los estados de especificación HTTP:¿Qué debo pasar para el encabezado WWW-Authenticate en 401 si solo estoy usando OpenID?

10.4.2 401 no autorizadas

La solicitud requiere autenticación de usuario. La respuesta DEBE incluir un campo de encabezado WWW-Authenticate (sección 14.47) que contenga un desafío aplicable al recurso solicitado.

Si el único esquema de conexión que apoyo es OpenID (o CAS, o tokens de OAuth, & c.), Lo que debería poner en este campo? Es decir, ¿cómo indico que el cliente necesita autenticación previa y crea una sesión en lugar de tratar de enviar credenciales junto con cada solicitud?

Antes de responder, "no envíe un 401; envíe un redireccionamiento 3xx a la página de inicio de sesión de OpenID", ¿qué pasa con los clientes que no son HTML? ¿Cómo, por ejemplo, apilaría Stack Overflow una API con la que mi software personalizado podría interactuar?

Respuesta

26

De acuerdo con RFC2617 el auth-scheme puede ser cualquier cosa; si realmente quiere un 401, no está técnicamente rompiendo la especificación inventando algo como WWW-Authenticate: OpenID realm="My Realm" location="http://my/login/location". Habiendo dicho eso, el comportamiento del código de otras personas cuando haces eso es, por supuesto, indefinido. :-)

3

Hay un OAuth Discovery spec que indicaría qué poner en el encabezado WWW-Authenticate, si la especificación aún no estaba obsoleta sin una especificación de reemplazo.

Cuestiones relacionadas