así que estoy tratando de implementar el siguiente escenario:HTTP Spec: cabeceras Autorización proxy y autorización
- Una aplicación está protegido por la autenticación básica. Digamos que está alojado en
app.com
- Un proxy HTTP, en frente de la aplicación, también requiere autenticación. Está alojado en
proxy.com
Por ello, el usuario debe proporcionar credenciales, tanto para el proxy y la aplicación de la misma solicitud, por lo tanto tiene diferentes pares de nombre de usuario/contraseña: un par para autenticar a sí mismo en contra de la aplicación, y otro nombre de usuario/contraseña para autenticarse contra el proxy.
Después de leer las especificaciones, no estoy seguro de cómo debo implementar esto. Lo que estaba pensando hacer es:
- El usuario realiza una solicitud HTTP al proxy sin ningún tipo de autenticación.
- El proxy responde
407 Proxy Authentication Required
y devuelve un encabezadoProxy-Authenticate
en el formato de:"Proxy-Authenticate: Basic realm="proxy.com"
.
Pregunta: ¿Este encabezadoProxy-Authenticate
está configurado correctamente? - El cliente vuelve a intentar la solicitud con un encabezado
Proxy-Authorization
, que es la representación Base64 del proxyusername:password
. - Esta vez el proxy autentica la solicitud, pero luego la aplicación responde con un encabezado
401 Unauthorized
. El usuario fue autenticado por el proxy, pero no por la aplicación. La aplicación agrega un encabezadoWWW-Authenticate
a la respuesta comoWWW-Authenticate: Basic realm="app.com"
. Pregunta: este valor de encabezado es correcto ¿no? - El cliente vuelve a intentar la solicitud con un encabezado
Proxy-Authorization
y un encabezadoAuthorization
valorado con la representación Base64 de la aplicaciónusername:password
. - En este punto, el proxy autentica correctamente la solicitud, reenvía la solicitud a la aplicación que autentica también al usuario. Y el cliente finalmente obtiene una respuesta.
¿Es correcto todo el flujo de trabajo?
Bueno, gracias por tener los encabezados Proxy- * explicados aquí, los estaba buscando. ¿Pero resolviste tu problema? ¿Por qué la pregunta sigue abierta? –
Como acaba de solicitar una validación general del enfoque intenté agregar un poco de color adicional en mi respuesta en torno a otras permutaciones de esta configuración. Sin embargo, si hace esta pregunta porque intentó lo que describió y encontró un error específico, actualice la pregunta para incluir ese error; aunque hice todo lo posible para validar lo que publicaste, la verdadera prueba sería simplemente probarlo y ver qué pasa. –