【发布时间】:2012-03-18 08:04:34
【问题描述】:
我正在尝试通过基本身份验证将用户自动登录到 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,不能让他们手动输入凭据。
目前,我们在 Xwiki 前面安装了 IIS 7.5,并将所有请求代理到另一台服务器上的 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?://(.+)&?_username=(.+)&_password=(.+)" />
<action type="Rewrite" url="http://{R:2}:{R:3}@xwiki.example.org/{R:1}" />
</rule>
当我在 IIS 中进行“测试模式”并提供我的 url 时,所有反向引用 ({R:x}) 都与我想要的数据相匹配。但是,当我在浏览器中访问 URL 时,重写规则无法调用。
有什么方法可以实现我想要的行为?
【问题讨论】:
标签: asp.net iis url-rewriting iis-7.5 xwiki