2021年1月29日金曜日

PaperCutでWebAuthを使用する方法

シングルサインオン(SSO)は、現在市場に出回っている認証/ディレクトリ・サービスの機能です。
ユーザは一同サインインすると、複数の別々のアプリケーションで認証を受けることができるようになります。

多くの組織がWebAuthでSSOを提供しています。
WebAuthはApacheのリバースプロキシを使用して、安全なトランスペアレントな認証システムを提供します。
PaperCut社はオックスフォード大学の協力でPaperCutにこのSSO設定のサポートを追加しました。

注記: この記事で説明する設定方法は、WebAuthのSSOソリューションとApacheのリバースプロキシの設定の両方に経験のある技術者を想定しています。
     Apache WebAuthモジュールはLinux上でApacheを実行する必要があります。



動作

①. AさんのブラウザはApacheのリバースプロキシである papercut.example.com をヒットします。

②. Apache用WebAuth拡張機能は、Aさんのセッション・キーのためにcookieを検証します。

③. Aさんが認証されていない場合、続行が許可される前に認証サーバへリダイレクトされます。

④. Aさんが認証された場合、リバースプロキシはAさんに代わって本物のPaperCutサーバ(real-papercut.example.com) へリクエストを送信します。
   このリクエストは通常のHTTPリクエストのように見えますが、AさんのIDを含むHTTPヘッダが追加されています。
   ほとんどの場合、これはAさんのユーザ名です。しかしリンクされたディレクトリ・サービスが受け付ける他の形式のIDである可能性もあります。

⑤. リクエストがPaperCutサーバに到達すると、PaperCutはリクエストが指定されたSSOプロキシから送信されたことを認識し、
   識別用のHTTPヘッダを探そうとします。

⑥. HTTPヘッダの内容を見つけると、PaperCutはAさんの転送されたリクエストを認証済みとして扱います。
   AさんはPaperCutにアクセスするために、再認証する必要はありません。
   プロキシはその後のすべてのリクエストと一緒にAさんの識別子をパッケージ化し続けるためです。



設定方法

上記例のpapercut.example.com のように、
リクエストのパブリック・フェイス側に設定された(Linuxサーバ上で実行されている) Apache Webサーバが必要です。
Webサーバには mod_proxy がインストールされている必要があります。

Apacheサイトの設定で、新しいバーチャル・ホストを追加してください。
これはプロキシがリクエストをどのサーバへ転送するか、ユーザのIDをどのHTTPヘッダに入れるかを定義します。 


 

  <VirtualHost *:80>

        ServerName papercut.example.com

        SSLEngine on

        SSLProxyEngine on

        ProxyRequests off

 

        <Location / >

                AuthType WebAuth

                require valid-user

                ProxyPass https://real-papercut.example:9192/

                ProxyPassReverse https://real-papercut.example:9192/

                RequestHeader set "SSO-USER" "%{WEBAUTH_USER}e"

        </Location>

  </VirtualHost>

 



Apacheリバースプロキシを設定した後、PaperCut管理画面の設定エディタから設定キーを編集します。

1. PaperCut管理画面へログイン

2. <オプション>を選択し、アクションから「設定エディタ(応用)」を選択

3. 設定キー「auth.web-login.sso-header」を検索します。
   上記リバースプロキシを使用するように設定したHTTPヘッダキーを指定します。
   PaperCutはこの値を使用してどのユーザが認証されているかを判断します。
   上記の例ではヘッダの値は「SSO-USER」になります。
   設定が完了したら値欄右にある[更新] をクリックしてください。

4. 設定キー「auth.web-login.sso-ip-whitelist」を検索します。
   値にリバースプロキシのIPアドレスを設定します。PaperCutはこのIPアドレスからのSSO接続のみを信頼します。
   複数のリバースプロキシを使用している場合、IPアドレスをカンマ区切りで指定することができます。
   設定が完了したら値欄右にある[更新] をクリックしてください。

5. 設定キー「auth.web-login.sso-logout-url」を検索します。(任意の設定)
   デフォルトでは、PaperCutからログアウトしたSSO認証済みユーザにはWelcome画面にリダイレクトされます。
   システム管理者は、この設定オプションを使用してPaperCutで認証されたSSOユーザを別のURLにリダイレクトさせることができます。


重要: PaperCutサーバの前にプロキシを設定する場合、HTTPヘッダの送信元チェック(CSRF)セキュリティ・チェックと競合するため、
    HOSTヘッダをオーバーライドしないでください。例えば、Apacheでmod_proxyを使用する場合、
    HOSTヘッダを変更するために「mod_rewrite」を使わないようにしてください。
    どうしてもHOSTヘッダを書き換える必要がある場合、PaperCutの設定ファイル「server.properties」の
    オプション「server.csrf-check.validate-request-origin」の設定からCSFRチェックを無効化することができます。



-------------------------
https://www.papercut.com/kb/Main/WebAuthAndPaperCut





0 件のコメント :

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。