Tengo una instancia de IIS configurada con Autenticación de Windows y Reescritura de URL, por lo que básicamente funciona como un proxy inverso. Mi servidor back-end (ejecutado en Linux) espera un encabezado REMOTE_USER
. ¿Es posible configurar IIS para pasar información sobre el usuario autenticado al servidor back-end?Servidor HTTP detrás de IIS: pase los encabezados de autenticación
Respuesta
Si IIS está configurado para Windows Auth
, entonces ARR
desafiará y solo reenviará las solicitudes una vez que el usuario esté autenticado.
Es posible reenviar encabezados personalizados con la solicitud utilizando una convención de nomenclatura HTTP
y el elemento serverVariables
en las reglas de reescritura. Por ejemplo, en el siguiente ejemplo, la variable de servidor LOCAL_ADDR
se reenvía como un encabezado denominado X-MY-HEADER
.
<rule name="Reverse Proxy to MySite" stopProcessing="true">
<match url="^MySite/(.*)" />
<serverVariables>
<set name="HTTP_X_MY_HEADER" value="{LOCAL_ADDR}" />
</serverVariables>
<action type="Rewrite" url="http://www.myothersite.com/{R:1}" />
</rule>
Por desgracia, no es posible utilizar esta técnica para reenviar una cabecera REMOTE_USER
. Esto se debe a que cuando el encabezado Authorization
está presente, la solicitud se reenvía antes de que se ejecute el módulo de autenticación y, por lo tanto, no se establecen las variables del servidor de autenticación (cuando se asignan a los encabezados, simplemente aparecen en blanco).
Sin embargo, puede configurar IIS para usar Basic Windows Auth
, y luego extraer el nombre de usuario del encabezado codificado Base64
Authorization
en su servidor Linux.
Tuve un problema similar y pensé que mencionaría cómo me las arreglé para solucionarlo. He instalado Helicon ISAPI-Rewrite 3 Lite, que es un filtro de solicitud ISAPI. Dado que se ejecuta después de la etapa de autenticación en la canalización, tiene acceso a la variable REMOTE_USER
y puede reescribir la solicitud de manera que se le agregue un nuevo encabezado HTTP con REMOTE_USER
como su valor. Por supuesto, esto solo ayuda si tiene algún control sobre el servidor backend para que pueda utilizar el valor de este encabezado personalizado en lugar de la variable original REMOTE_USER
.
El fragmento requerido en el archivo de configuración global ISAPI-reescritura de (httpd.conf
) es el siguiente:
RewriteBase/
RewriteCond %{REQUEST_URI} ^/MySite.*
RewriteHeader X-Remote-User: .* %{REMOTE_USER}
Los límites RewriteCond
parte de esta regla a URIs comienzan con /MySite
; no dude en ajustarlo según sea necesario.
- 1. ¿Cómo permito detrás de punto en los encabezados de host en IIS
- 2. Enviando encabezados HTTP con HTTP Web Request para autenticación NTLM
- 3. determinando los métodos de autenticación HTTP http
- 4. Autenticación HTTP básica para un servidor Jetty
- 5. Detecta que los encabezados http de asp.net ya se enviaron
- 6. ¿Cuál es el razonamiento detrás de los encabezados?
- 7. jQuery autenticación HTTP
- 8. Compactar encabezados Http
- 9. caché de autenticación HTTP
- 10. ¿Cómo obtengo los encabezados de un error de servidor 401?
- 11. Analizando encabezados HTTP
- 12. IE/IIS problema de autenticación integrado
- 13. HTTP de autenticación de iPhone
- 14. Conflictos de encabezados HTTP multilínea
- 15. beneficios de "Autenticación HTTP con PHP"
- 16. Configure los ajustes de autenticación IIS utilizando la clase ServerManager
- 17. iis only Add Caduca los encabezados de las imágenes
- 18. Websocket Server Detrás de IIS 7 Reverse Proxy
- 19. Cómo usar los encabezados de caché HTTP con PHP
- 20. Reescribir los encabezados de respuesta con node-http-proxy
- 21. Eliminación de encabezados http en Apache2
- 22. Ajax: autenticación básica de HTTP y cookie de autenticación
- 23. IIS 7.5 Encabezados de autenticación no válidos 401.2 al ver el sitio en el navegador
- 24. WebServiceHostFactory e autenticación IIS
- 25. Cómo obtener el tamaño de archivo de los encabezados http
- 26. IIS HTTP Error 500.19
- 27. Autenticación HTTP en J2ME
- 28. ¿De dónde vienen estos encabezados HTTP adicionales?
- 29. JSF, sobrescribir encabezados HTTP
- 30. Autenticación básica de IIS con LDAP