He leído RFC 2617 y no encuentro allí ni en ningún otro lugar el delimitador si se admiten varios esquemas. Por ejemplo, supongamos que tanto Basic como Digest son compatibles. Entiendo que puede aparecer de esta manera:¿Cuál es el delimitador para WWW-Authenticate para esquemas múltiples?
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic
WWW-Authenticate: Digest
Pero también he leído que tanto se pueden enumerar como una sola línea, pero nadie muestra un ejemplo o describe lo delimitador de usar. He visto precauciones que comas se pueden utilizar dentro de un solo esquema:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest param1="foo", param2="bar"
También he leído que si comas se utilizan dentro de un esquema, que otros esquemas deben ser colocados en líneas separadas. Así que me imagino que en el caso anterior si agregamos Basic 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 tiene una línea
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Scheme stuff, morestuff, more stuff
¿Qué es eso? ¿Es una lista de esquemas delimitada por comas, o es ese un esquema, con algunos parámetros?
Sí, parece que WinInet no maneja múltiples esquemas de autenticación en un solo encabezado. No me entusiasma, pero creo que podría ejecutar el servicio en múltiples endpoints, uno que solo admite Basic y uno que solo admite Negotiate, y haga que el cliente pruebe el que solo admite Negotiate primero, y si eso falla , cambie a Básico. – bpeikes
Usar un recurso diferente para un tipo diferente de esquema de autenticación no me parece útil. Después de todo, desea codificar el encabezado en una respuesta '401 no autorizada', si el cliente intenta acceder a un recurso específico no autenticado. Además: el concepto de puntos finales muestra una falta de comprensión de la arquitectura REST HTTPs. En la web, preferimos tener puntos de entrada. – aef