2022年5月23日月曜日

Shibboleth3のネイティブIISモジュールを使用して、IIS8.0をIDPとしてAzure ADに統合した例


【注記】この記事はPaperCutを管理しているエンドユーザの記事を翻訳しています。

PaperCut MFを使用しているあるエンドユーザは、彼らの開発環境でShibboleth3のネイティブIISモジュールを使用し、
IIS8.0 でIDPとしてAzure ADと統合することに成功しました。
この記事では彼らが実施した設定手順を記載します。


IISのインストール

 1. サーバーマネージャーを起動する

 2. 「サーバの役割と機能」を選択

 3. 「役割」から「Webサーバー(IIS)」を選択

 4. 「機能」はスキップ

 5. [インストール]をクリック


Shibbolethのインストール

 1. Shibboleth3をダウンロード(https://shibboleth.net/downloads/service-provider/latest/win64/)

 2. ダウンロードしたインストーラを実行

 3. インストールパスをプログラムドライブのルートに変更 (例: D:\shibboleth-sp)

 4. 「Install IIS 7 Module」に必ずチェックを入れてください。

 5. その他はデフォルトのまま

 6. Shibbolethデーモンサービスの名前を適合するように変更してください。

    <path to="" installation="">\shibboleth-sp\sbin64\shibd.exe -remove shibd_Default
    <path to="" installation="">\shibboleth-sp\sbin64\shibd.exe -install shibd

 7. Iisresetを実行した後、「http://localhost/Shibboleth.sso/Status」に移動し、
   サービスが正常に動作しているかを確認してください。


Shibbolethの設定

 1. 「D:\shibboleth-sp\etc\shibboleth\」にある「shibboleth2.xml」と
   「attribute-map.xml」をアプリケーションの必要に応じて変更してください。

 2. 着信リクエストのホスト名とポートをIISサイトにマップするためにISAPI要素を構成する必要があります。

    <isapi normalizerequest="true" safeheadernames="true">
    <site id="1" name="papercut.example.com" scheme="https" port="443"/>
    </isapi>

 3. アプリケーションの様々な箇所を保護するためにRequestMapper要素を構成する必要があります。

    <requestmapper type="Native">
    <requestmap>
    <host name="papercut.example.org">
    <path name="user" authtype="shibboleth" requiresession="true"/>
    <path name="admin" authtype="shibboleth" requiresession="true"/>
    <path name="app" authtype="shibboleth" requiresession="true"/>
    </host>
    </requestmap>
    </requestmapper>

 4. ApplicationDefaults要素にエンティティIDを設定し、REMOTE_USER属性に「ppcuser」を追加します。

    <applicationdefaults entityid="http://papercut.example.com/shibboleth" 

    remote_user="eppn persistent-id targeted-id uid ppcuser" ...="">

 5. サーバへのプロキシアクセスは、ApplicationDefaults/Sessions 要素で、
   handlerSSLを「false」に設定し、cookiePropsを「https」に設定します。

 6. attribute-map.xml の「ppcuser」属性にusernameのマッピングを追加します。

     <attribute id="ppcuser" name="http://schemas.xmlsoap.org/..."/>


アプリケーションプロキシの設定

 1. 「Application Request Routing(以下ARR)」を有効化します。
   (新しいIISネイティブモジュールを使用する場合、この手順は不要の可能性があります。)

    A) ARRパッケージをダウンロードしてインストール(https://www.iis.net/downloads/microsoft/application-request-routing)
    B) IISマネージャーを開きます。
    C) 「サーバー名」-「Application Request Routing」を選択
    D) 右側のメニューから「Server Proxy Settings」を選択
    E) 「Enable Proxy」にチェックをつけてください。

 2. 「Proxy Rewrites」を設定してください。

    1. IISマネージャーからアプリケーションに関連付けられたサイトへ移動してください。
    2. 右側のメニューから「Add Rules…」をクリック
    3. Shibbolethルール
       Shibbolethリクエストをキャプチャするため、「Blank Rule」テンプレートを使用してInboundRuleを作成します。
       Requested URL: Matches the pattern(パターンに合わせる)
       Using: Regular expressions(正規表現)
       Patern: Shibboleth.sso/.*
       Ignore case: チェックを入れる
       Action Type: None
       Stop processing of subsequent rules: チェックを入れる

    4. PaperCut Application Proxy Rule
      アプリケーションへプロキシバックするための別の空白のInboundRuleを作成します。

       Requested URL: Matches the pattern(パターンに合わせる)
       Using: Regular expressions(正規表現)
       Pattern: (.*)
       Ignore case: チェックを入れる
       Action Type: Rewrite
       Rewrite URL: http://localhost:9191/{R:1}
       Stop processing of subsequent rules: チェックを入れる


サービスの再起動

 1. Shibbolethを再起動後、IISを再起動すると、設定が正しく読み込まれます。

    Restart-Service shibd; iisreset


Azure ADの設定

 1. 「portal.azure.com」へアクセスしてください。

 2. <Azure Active Directory> - < Enterprise Applications > - <New Application > - < Non-Gallery Application >を選択してください。

 3. 「アプリケーション名」を選択してください。

 4. < Single sign-on > - <SAML>へ移動してください。

    A) 「http://disq.us/url?url=http%3A%2F%2Fyour-app- server.example.com
       %2FShibboleth.sso%2FMetadata%3AGYwrQmJRloFVFUc0-bWmWBuGnLw&cuid=732743」へ移動し
      Shibbolethのメタデータを取得してください。
    B) [Upload Metadata File]ボタンを使用して、サービスプロバイダのメタデータファイルをアップロードしてください。
    C) アトリビュートとクレームをマッピングしてください。
    D) 保存してください。

 5. プロパティへ移動してください。

    A) User assignment required = No
       すべてのユーザがアプリケーションへログインできるようにする場合、設定してください。
       「ユーザとグループ」機能を使用すると、より詳細な権限を設定することができます。
    B) 保存してください。

 6. このサービスのIdP エンティティ IDをコピーし、「ApplicationDefaults/Sessions/SSO」要素に貼り付けてください。

    <sso entityid="https://sts.windows.net/c82354df-7b36-4646-8e6a-064160399dcd/">
    SAML2
    </sso>

 7. このサービスのIdPメタデータURLをコピーし、
        「ApplicationDefaults/Sessions/MetadataProvider」要素に貼り付けてください。

    <metadataprovider type="XML" url="https://login.microsoftonline.com/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/federationmetadata/2007-06/federationmetadata.xml?appid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"/>


プロキシの設定

PaperCutアプリケーションのプロキシにNGINXを使用しているため、若干の差異はあるかもしれません。

 1. NGINX設定を構成します。

    server {
    listen 443 ssl;
    server_name papercut.example.com;
    ssl_certificate certs/papercut.crt;
    ssl_certificate_key certs/papercut.key;

    location / {
    include /etc/nginx/mime.types;
    client_max_body_size 1024M;
    proxy_pass http://papercut-pd-upstream;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Scheme $scheme;
    }
    }

 2. 「papercut.example.com」をNGINXサーバをポイントするようにDNSを設定してください。

 3. プロキシを正しく動作させるため、「<papercut root="">/server/server.properties」にこのプロパティを追加/変更する必要があるかもしれません。

    server.csrf-check.validate-request-origin=N


PaperCutの設定

 1. PaperCutアプリケーション開いてください。
     (プロキシ設定がまだの場合、アプリケーションサーバ上かブラウザを起動し「http://localhost:9191/admin」にアクセスしてください。)

 2. <オプション> - <拡張> へ移動してください。

 3. 「Webシングルサインオン (SSO)」エリアを表示し、次のように設定してください。

    Webシングルサインオンの有効化: チェックを入れる
    プルダウン:WebAuth
    WebAuth HTTP ヘッダ・キー:Ppcuser
    許可された WebAuth IP アドレス:127.0.0.1,0:0:0:0:0:0:0:1
    管理者ログイン:SSOを使用して直接アクセス (任意)
    ユーザ・ログイン:SSOを使用して直接アクセス (必須)
    その他のログイン:標準(ユーザ名とパスワード)
    確認ページに 「ユーザの切り替え」リンクを表示:任意
    ログアウト時にユーザが移動するURLを入力:任意(ダイレクト先URL入力は必須)


















追加情報

https://shibboleth.atlassian.net/wiki/spaces/SP3/pages/2065335545/Install+on+Windows
https://shibboleth.atlassian.net/wiki/spaces/SP3/pages/2065335360/IIS






0 件のコメント :

コメントを投稿

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