9

基本認証を介してユーザーを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にアクセスすると、書き換えルールが呼び出されません。

希望する行動をとることができる方法はありますか?

4

4 に答える 4

15

IISでURL書き換えを使用して基本認証を行うことができます。サーバー変数HTTP_Authorizationに値Basicを追加し、その後にbase64でusername:passwordを追加する必要があります。許可された変数に変数を追加することを忘れないでください

したがって、パスワードopen sesameを持つユーザーAladdinの場合、形式はAladdin:opensesameおよび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スクリーンショット認証

于 2012-06-15T12:22:58.950 に答える
0

これは行う必要があります:

<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>
于 2012-02-28T23:34:12.083 に答える
0

承認をARRに委任することはできません。したがって、コンテンツの機密性が高く、認証が必要な場合は、キャッシュを有効にしないことをお勧めします。 ARR

しかし、解決策には回避策があります。

解決

于 2017-05-29T12:38:28.010 に答える
-1

これはIISでは不可能なようです。

于 2012-03-05T22:50:23.630 に答える