online gen auth http-authentication

http-authentication - gen - basic authentication php



¿Cuál es el delimitador para WWW-Authenticate para esquemas múltiples? (1)

He leído el RFC 2617 y no puedo encontrar allí ni en ningún otro lugar cuál es el delimitador si se admiten varios esquemas. Por ejemplo, supongamos que tanto Basic como Digest son compatibles. Entiendo que puede aparecer de esta manera:

HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic WWW-Authenticate: Digest

Pero también he leído que ambos se pueden enumerar como una sola línea, pero nadie muestra un ejemplo o describe qué delimitador usar. He visto advertencias de que las comas pueden usarse dentro de un solo esquema:

HTTP/1.1 401 Unauthorized WWW-Authenticate: Digest param1="foo", param2="bar"

También he leído que si se usan comas dentro de un esquema, los otros esquemas deben colocarse en líneas separadas. Así que me imagino que en el caso anterior, si añadimos Básico, aparecería así:

HTTP/1.1 401 Unauthorized WWW-Authenticate: Digest param1="foo", param2="bar" WWW-Authenticate: Basic

Eso es bastante simple. Pero ahora supongamos que solo tienes una línea

HTTP/1.1 401 Unauthorized WWW-Authenticate: Scheme stuff, morestuff, more stuff

¿Cual es ese? ¿Es esa una lista de esquemas delimitada por comas, o es ese esquema con algunos parámetros?


Por lo que puedo decir, la especificación puntúa sobre el tema. La sección 1.2 establece:

Nota: los agentes de usuario deberán tener especial cuidado al analizar WWW-
Autenticar o Proxy-Autenticar el valor del campo de encabezado si contiene
más de un desafío , o si más de un encabezado WWW-Autentica
Se proporciona el campo, ya que el contenido de un desafío puede
Contiene una lista de parámetros de autenticación separados por comas.

Creo que podemos traducir la atención especial al mejor de la suerte, amigo .

Pragmatismo
Como cuestión práctica, sospecho que múltiples esquemas significa que uno debería usar múltiples encabezados wwww-authenticate . Los esquemas son extensibles; por ejemplo, puedo idear un esquema llamado "fresa" u "opaco" si quiero ser siniestro. Dado esto, realmente no hay una buena manera de analizar un liner sin algún tipo de delimitador de "terminación de esquema".

Discusión del W3C
No eres la primera persona con esta pregunta. Hubo una discusión en la lista de correo del W3C. El cartel decía:

No estaba cuestionando la necesidad de proporcionar múltiples desafíos en una sola respuesta. Solo estaba cuestionando la sabiduría de permitir múltiples desafíos en un solo campo de encabezado, dada la extraña combinación de separadores que crea.

Algunos otros hilos que discuten temas actuales y acciones futuras que pueden ser de interés:

Si solo ...
No es que tenga el estómago para hacerlo, pero se podría cavar a través del código chromimum, firefox y webkit para ver cómo esas comunidades han manejado el problema.