gpt4 book ai didi

asp.net - 查询字符串上基本身份验证的 IIS 重写规则

转载 作者:行者123 更新时间:2023-12-02 16:27:34 25 4
gpt4 key购买 nike

我正在尝试通过基本身份验证自动登录用户到 Xwiki 安装。这是因为帮助存储在 wiki 中,但我们希望检索过程对用户透明。

我们将用户推送到一个 URL(通过 <a> 标签),例如: http://username:password@xwiki.example.org/xwiki/bin/view/Main?basicauth=1

这在除 Internet Explorer 之外的所有浏览器中都可以正常工作(请参阅:http://support.microsoft.com/kb/834489。不幸的是,我们 80% 的用户群使用 Internet Explorer,并且无法让他们手动输入凭据。

目前,我们有 IIS 7.5 位于 Xwiki 前面,并将所有请求代理到另一台服务器上的 Tomcat 实例。这很好用。为了解决我的问题,我想我可以使用 IIS 重写规则来将 URL 变成这样:

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

进入此:

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

这个想法是 IIS 会将 _username/_password 查询字符串参数替换为 URL 并将其传递给 Tomcat,而 Xwiki 将忽略额外的参数。

我创建了一个 URL 重写规则,例如:

<rule name="BasicAuthRewrite" enabled="true">
<match url="https?://(.+)&amp;?_username=(.+)&amp;_password=(.+)" />
<action type="Rewrite" url="http://{R:2}:{R:3}@xwiki.example.org/{R:1}" />
</rule>

当我在 IIS 中进入“测试模式”并提供我的 url 时,所有反向引用 ({R:x}) 都与我想要的数据匹配。但是,当我在浏览器中访问该 URL 时,重写规则无法调用。

有什么方法可以实现我想要的行为吗?

最佳答案

可以在 IIS 上通过 URL 重写进行基本身份验证。您应该添加服务器变量 HTTP_Authorization 值 Basic,后跟 base64 格式的用户名:密码。记得在允许的变量中添加该变量

因此,对于密码为 open sesame 的用户 Aladdin,格式为 Aladdin:open sesame 和 base64 编码的 QWxhZGRpbjpvcGVuIHNlc2FtZQ==。

这意味着授权:基本QWxhZGRpbjpvcGVuIHNlc2FtZQ==

<rule name="SomeName" stopProcessing="true">
<match url="url/to/match" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="http://www.redirecturl.com/" appendQueryString="true" />
<serverVariables>
<set name="HTTP_Authorization" value="Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" />
</serverVariables>
</rule>

IIS Screenshot Authentication

关于asp.net - 查询字符串上基本身份验证的 IIS 重写规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9488915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com