9
votes

Règle de réécriture IIS pour l'authentification de base sur le QueryString

J'essaie de vous connecter automatiquement aux utilisateurs à une installation XWIKI via Auth Basic Auth. C'est parce que l'aide est stockée dans le wiki, mais nous voulons que le processus de récupération soit transparent pour l'utilisateur.

Nous appuyons sur l'utilisateur sur une URL (via un tag). : http: // Nom d'utilisateur: mot de passe@xwiki.example.org/xwiki/bin/view/main? basicauth = 1

Ceci fonctionne bien dans chaque navigateur sauf Internet Explorer (voir : http://support.microsoft.com/kb/834489 . Malheureusement, 80% de notre base d'utilisateurs utilise Internet Explorer et que ce n'est pas une option de type dans les informations d'identification manuellement.

Actuellement, nous avons l'IIS 7.5 assis devant Xwiki et à la proxy de toutes les demandes à l'instance Tomcat sur un autre serveur. Cela fonctionne bien. Pour résoudre mon problème, je pensais pouvoir utiliser une règle de réécriture IIS pour transformer une URL comme ceci:

http://xwiki.example.org/xwiki/bin/view/main?basicauth=1&_username=username&_password=password

dans Ceci:

http: // nom d'utilisateur: mot de passe@xwiki.example.org/xwiki/bin/view/main? BASICAUTH = 1 & _AUSEname = nom d'utilisateur & _password = mot de passe < p> L'idée étant que l'IIS remplace les paramètres _username / _password de QueryString dans l'URL et transmettez-le à Tomcat, et XWiki ignorerait l'Extr. un paramètre.

J'ai créé une règle de réécriture URL comme: xxx

lorsque je vais "motif de test" dans IIS et fournir mon URL, tout le Les brassards ({R: x}) correspondent aux données que je veux. Cependant, lorsque je visiterai l'URL de mon navigateur, la règle de réécriture ne parvient pas à invoquer.

Y a-t-il un moyen que je puisse atteindre mon comportement désiré?


0 commentaires

4 Réponses :


0
votes

Cela devrait faire:

<rule name="BasicAuthRewrite" stopProcessing="true">
    <match url="(.*)" />
    <conditions trackAllCaptures="true">
        <add input="{QUERY_STRING}" pattern="basicauth=1&amp;_username=(.+)&amp;_password=(.+)" />
    </conditions>
    <action type="Rewrite" url="http://{C:1}:{C:2}@xwiki.example.org/{R:1}" appendQueryString="false" />
</rule>


2 commentaires

HMM, IIS renvoie une "erreur HTTP 502.3 - Bad Gateway Le nom du serveur ou l'adresse n'a pas pu être résolue". Je pense que cela pourrait interpréter le nom d'utilisateur / mot de passe dans le nom du nom de domaine et essayer de vous connecter. Je crois que cela parce que si je prends le nom d'utilisateur / mot de passe ("{C: 1}: {C: 2} @" section) Il charge la page de connexion comme prévu. Savez-vous s'il y a un moyen de contourner cela?


Désolé, je ne connais pas de restrictions d'inclusion de détails d'authentification dans le cadre de l'adresse de domaine.



-1
votes

Il semble que cela ne soit pas possible dans IIS.


0 commentaires

15
votes

Il est possible de faire une authentification de base avec la réécriture URL sur IIS. Vous devez ajouter la variable serveur http_authorization la valeur de base suivie du nom d'utilisateur: mot de passe à base64. N'oubliez pas d'ajouter la variable dans les variables autorisées

Ainsi pour l'utilisateur Aladdin avec le mot de passe Open Sesame Vous le format serait Aladdin: Ouvrir Sesame et Base64 codé qwxhzgrpbjpvcgvuihnlc2ftzq ==.

qui se traduit par Autorisation: Basic qwxhzgrpbjpvcgvuihnlc2ftzq == xxx

Authentification d'écran IIS


6 commentaires

Et si cela dépend de l'utilisateur connecté? Je ne peux certainement pas la définir sur le fichier de configuration, car il est calculé sur l'heure d'exécution.


Je pense que cette solution pourrait ne pas fonctionner pour votre problème. Vous pouvez écrire quelque chose avec des fonctionnalités de réécriture / proxy - comme des formes de proxy et d'utiliser cela comme «travail».


Que voulez-vous dire avec "réécrire / proxy - comme"? Quelque chose comme créer un contrôleur qui envoie des demandes et réécrire les réponses?


Quelque chose comme ça, en effet.


Une chose très importante à retenir est l'endroit où @jaco dit d'ajouter la variable dans les variables autorisées. Ceci est fait sur l'écran de réécriture URL sous 'View Server Variables'. Sans cela, cela ne passera pas la variable.


@Jaco: génial merci! Mais en tant que pirate informatique, vous voudrez peut-être ajouter de plus d'importance à ajouter la variable aux variables autorisées (je reproduis cela au début) et peut-être ajouter un indice / une capture d'écran ajoutez ceci. Ajoutez peut-être également un mot sur le fait que les vars de serveurs autorisés ne sont pas écrits dans le fichier web.config.



0
votes

L'autorisation ne peut pas être déléguée à ARR. Par conséquent, si le contenu est de nature très sensible et nécessite une autorisation, il est recommandé de ne pas activer le cache. ARR

Mais il y a du travail autour de la solution.

solution


1 commentaires

Il serait bien préférable que vous puissiez inclure la partie pertinente de la solution dans votre message; Si le lien passe hors ligne, votre réponse resterait utile.