Serveur HTTP derrière IIS: passer des en-têtes d'authentification
J'ai une instance de IIS configuré avec l'Authentification Windows et de Réécriture d'URL, de sorte qu'il fonctionne essentiellement comme un reverse proxy. Mon serveur d'arrière-plan (exécuter sur Linux) attend un REMOTE_USER
en-tête. Il est possible de configurer IIS pour transmettre des informations sur l'utilisateur authentifié, le serveur d'arrière-plan?
OriginalL'auteur Andrew T | 2011-09-09
Vous devez vous connecter pour publier un commentaire.
Si IIS est configuré pour
Windows Auth
, puisARR
mettra au défi et seulement transférer les demandes une fois que l'utilisateur est authentifié.Il est possible de transmettre des en-têtes personnalisés à la demande à l'aide d'un
HTTP
convention de nommage et deserverVariables
élément dans les règles de réécriture. Par exemple, dans l'exemple suivant, la variable serveurLOCAL_ADDR
est transmis comme un en-tête nomméX-MY-HEADER
.Malheureusement il n'est pas possible d'utiliser cette technique pour transférer un
REMOTE_USER
en-tête. C'est parce que lorsque leAuthorization
en-tête est présent, la demande est transmise avant le module d'authentification fonctionne, et donc auth server variables ne sont pas définies (lorsqu'elles sont mappées à des en-têtes ils viennent simplement grâce à vide).Vous pouvez toutefois configurer IIS pour utiliser
Basic Windows Auth
, puis extraire le nom d'utilisateur de laBase64
codéAuthorization
en-tête sur votre serveur Linux.OriginalL'auteur TheCodeKing
J'ai eu un problème similaire et j'ai pensé que je voudrais parler de la façon dont j'ai réussi à le contourner. J'ai installé Helicon ISAPI Rewrite 3 Lite, qui est un ISAPI filtre de requête. Depuis, il court après l'authentification de l'étape dans le pipeline, il a accès à la
REMOTE_USER
variable et peut réécrire la demande d'un nouvel en-tête HTTP est ajouté avecREMOTE_USER
de sa valeur. Bien sûr, cela permet uniquement si vous avez un certain contrôle sur le serveur d'arrière-plan de sorte que vous pouvez faire usage de la valeur de cet en-tête personnalisé au lieu de l'originalREMOTE_USER
variable.Le nécessaire extrait de code dans ISAPI-Réécriture globale de fichier de configuration (
httpd.conf
) est comme suit:La
RewriteCond
partie les limites de cette règle à l'Uri commence avec/MySite
; n'hésitez pas à l'adapter selon vos besoins.OriginalL'auteur Tamás