Shibboleth 3 を IdP SAML インテグレーションとして使用する

Liferayサポートは、特定のサードパーティ製品を他の製品よりも推奨したり、推奨したりすることはありません。 Liferayは、これらの製品に関して、ここに記載されている指示や参照されている指示には一切責任を負いません。 これらの原則の実施は、すべて加入者の責任となります。

この記事では、Shibboleth を Identity Provider (IdP) と Liferay DXP 7.0 に SAML as a Service Provider (SP) として設定するための概念実証を文書化しています。 これは、SPとして機能するDXPやポータルインスタンスに接続されたIdPのプロトコルとしてShibbolethを使用するための非常に一般的なビジネス実装です。 そうすれば、ユーザーはSPからシングルサインオン(SSO)アクションを実行してインスタンスにログインすることができます。

この記事では、明確化のためにいくつかのステップが記載されている一般的なチェックリストとして機能します。 管理者は、このプロセスを開始する前に、Shibboleth と LDAP に関連する文書のレビューを常に確認する必要があります。

以下のようなものが必要となります。

  • ローカルマシンにインストールされているShibboleth 3
  • SPとして構成された1つのLiferay DXP 7.xインスタンス
  • ハイパーソニックス(HSQL)以外のデータベース

オプション(ただし強く推奨)。

  • 2つ目のDXPインスタンス
  • エルディーエーピーサーバー

重要な注意点: Shibboleth 3 にはネイティブの idp.war が付属していますが、これは をアプリケーションサーバにデプロイしなければなりません。 より簡単にするために、このファイルをDXP 7.0インスタンスにデプロイしました。 通常、Liferay DXP 7.0はこのアプリサーバー上にある必要はありませんが、この概念実証では、特にこのLDAPサーバーにプロダクションデータが含まれている場合、このインスタンスを使用してLDAPサーバーを管理することもできます。
さらに、本番環境では、データベースだけに頼るのではなく、LDAPサーバーを使用してすべてのユーザーを管理するのがベストプラクティスです。

決議

チェックリスト

  1. シボブレイス3をインストール
  2. Apache Tomcatに必要なJava Server Tag Library Jarを追加する
  3. HTTPSを有効にする
  4. idp-metadata.xml ファイルを設定します。
  5. IdP インスタンスの設定
  6. Liferay DXPをサービスプロバイダとして設定する
  7. ShibbolethにSPメタデータを追加
  8. SPが開始したSSOの実行

シボブレイス3をインストール

  1. 最新の シブボトレ3 IdPをダウンロードしてインストールします。
  2. インストール処理中に、インストールフォルダを指定するか、デフォルトを使用します (例えば、*Nix 環境では /opt/shibboboleth-idp )。 これは、将来の参照のための短い手として、 idp.home と呼ばれることになります。
  3. インストールする場合は、以下の値を使用してください。
    • ホスト名。 ローカルホスト
    • SAML EntityID: https://localhost:8443/idp/shibboleth
    • 属性スコープ。 localhost
    • パスワード: shibboleth-test

Apache Tomcat用に必要なJavaサーバタグライブラリJARを追加する

Apache Tomcat 8.xを使用している場合、生成された のidp.war ファイルを使用するには、追加のJava Server Tag Library .jar が必要です。 このJSTLの詳細については、「追加情報」の項を参照してください。

  1. jstl-1.2.jarをダウンロードしてください。
  2. 生成された の idp.war を 7zip のような zip ファイルマネージャプログラムを使って開いてください。
  3. jarを {idp.war}/.../WEB-INF/lib/ フォルダに置きます。
  4. 更新された idp.warを保存します。

HTTPSを有効にする

アプリケーションサーバでHTTPSを有効にする必要があります。 両方のアプリケーションサーバーでSSLが有効になっており、Javaセキュリティ証明書が両方のアプリケーションサーバーに追加されていることを確認してください。 本番環境でShibbolethを使用する場合は、セキュリティ証明書がそのレベルに適したものであることを確認してください。 必ず最初にベンダーのドキュメントを参照してください。

idp-metadata.xml ファイルを設定します。

生成された idp-metadata.xml の要素 SingleSignOnService Bindingに正しいポート番号があることを確認してください。 特に、 Location 属性にポート番号:8443が含まれていることを確認してください。
<SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest" Location="https://localhost:8443/idp/profile/Shibboleth/SSO"/>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://localhost:8443/idp/profile/SAML2/POST/SSO"/>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign" Location="https://localhost:8443/idp/profile/SAML2/POST-SimpleSign/SSO"/>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://localhost:8443/idp/profile/SAML2/Redirect/SSO"/>

IdPインスタンスの設定

上述のように、Shibboleth 3 の idp.war がデプロイされているのと同じアプリケーションサーバに DXP 7.0 がインストールされていることは ではなく である必要があります。 しかし、この2つ目のDXP 7.xインスタンスを使用するのがより簡単になります。

  1. DXP 7.0プラットフォームを起動します。
  2. 変更した のidp.war をこのアプリサーバーにデプロイします。
  3. 戦争が正常に展開されたことを確認するには、https://localhost:8443/idp/status にアクセスしてください。

このサーバーがアクティブな間、任意のLDAPサーバーをこのDXPインスタンスに接続します。 このスタック全体がIdPとして機能します。

完了したら、アプリケーションサーバーをシャットダウンします。 SP のメタデータが Shibboleth の設定ファイルに追加されるように、アプリケーションサーバをシャットダウンする必要があります。

チェックポイント

  1. Shibboleth 3がローカルマシンにインストールされました。
  2. Apache Tomcat を使用している場合、追加の JSTL .jaridp.warの中に挿入されています。 そうでなければ、このステップをスキップするのが無難です。
  3. Java セキュリティ .jks ファイルが生成され、IdP インスタンスサーバで HTTPS が有効になりました。
  4. idp-metadata.xml には正しいポートが含まれています。
  5. のidp.war が正常に展開されました。
  6. LDAPを使用している場合、このサーバーはDXP 7.0に接続されています。

Liferay DXPをサービスプロバイダとして設定する

2つのLiferay DXPインスタンスが実行されている場合は、サービスプロバイダのインスタンスを変更して、競合しないように異なるポートで実行する必要があります。 アプリケーションサーバによってポートの割り当て方法が異なるため、このガイドの範囲は限られています。 デモのため、以下の手順はApache Tomcatの場合のものです。 管理者は、変更を行う前にまずドキュメントを参照してください。

提案された構成。

  • IdPとしてLDAPサーバーを使用します。
    • HTTP: 8080
    • HTTPS: 8443
  • SPとしてDXP7.
    • HTTP: 8081
    • HTTPS: 8444

上述したように、Liferay DXPインスタンスは本番レベルのデータベースに接続されている必要があり、Hypersonicのような非本番データベースには接続されていません。 どのデータベースがサポートされているかについては、 互換性マトリックス ページを参照してください。 デモでは、MySQL 5.7を使用しました。

ドキュメントはすでに存在しており、管理者が Liferay DXPをSAMLサービス・プロバイダとして構成する際のガイドとなるようになっている. もちろん、最初に適切な SAML Connector を DXP インスタンスにデプロイすることを忘れないでください。

Liferay DXPとShibbolethを統合する際に注意すべき点がいくつかあります。

  1. SAML SP メタデータを生成する場合、HTTPS が使用されていることを確認する(https://localhost:8444/c/portal/saml/metadata)。
  2. サインイン時に は絶対にチェックしない Remember Me チェックボックスにチェックを入れてください。 これはすべてのSSO/SLOを否定します。
  3. 以下の設定は、 General タブで有効にする必要があります。
    • SAML の役割。サービスプロバイダ
    • EntityID: https://localhost:8444
  4. 以下の設定は、 サービスプロバイダ タブで有効にする必要があります。
    • アサーション署名が必要
    • SSLが必要
    • LDAPインポートを有効にする
    • 符号メタデータ
  5. 以下の設定は、 Identity Provider タブで有効にする必要があります。
    • 名前はシブブレイス
    • EntityID: https://localhost:8443/idp/shibboleth
    • メタデータURL: idp-metadata.xml ファイルをアップロードしてください。
    • 名前の識別子の形式。不特定*
    • 属性マッピング。(ブランク)
  6. をクリックし、終了したら を保存します。

SP インスタンスでは,IdP インスタンスの認証情報と一致するユーザが必要です. デモのために、このDXP 7.0 SPインスタンスはデータベースを使用してユーザーを管理しています。 そうでなければ、SSO/SLOは失敗します。 これは、開発者や本番環境に関係なく言えることです。

インスタンスを正しくセットアップし、IdP と SP が通信しているかどうかをテストする簡単な方法があります。 SP インスタンスのコントロールパネルで ユーザーと組織に移動します。 LDAPディレクトリにも存在する同じクレデンシャルで管理者権限を持つDXP 7.0ユーザーを作成します。 この新しく作成されたユーザー(名前:John Harrison / パスワード:Khan)を使用して、DXP 7.0からLDAPに対して認証を試みます。

最後に、SPメタデータファイルを生成します。

  1. https://localhost:4444/c/portal/saml/metadataに移動します。
  2. sp-metadata.xmlとして保存してください。

チェックポイント

  1. DXP 7.0インスタンスは別のポート(この例では8444)で実行されています。
  2. DXP 7.0がサービスプロバイダとして有効になりました。
  3. SAML SP メタデータが生成されました。
  4. DXP 7.0 SPにLDAPに一致するユーザーが作成されています。

ShibbolethにSPメタデータを追加

Liferay DXP 7.0でSSO/SLOをテストする前に、お互いのメタデータを指し示すことでIdPインスタンスとSPインスタンスを接続しなければなりません。 これは、Shibboleth IdPインスタンスで sp-metadata.xml を指定することを意味し、逆に、SAMLが有効になったときには、SPインスタンスで idp-metadata.xml がすでに指定されていたことになります。 Shibboleth IdP インスタンスには、変更するファイルがいくつかあります。

まず、Shibboleth IdPに sp-metadata.xml を指定して設定を完了させます。

  1. {idp.home}/conf/ フォルダに移動します。
  2. ファイル のmetadata-providers.xml を以下のように修正します。
    <MetadataProvider id="sp-metadata"
        xsi:type="FilesystemMetadataProvider"
        metadataFile="/{idp.home}/metadata/sp-metadata.xml"/>
    

    ここで、 metadataFile= には、 sp-metadata.xml ファイル(metadataFile="/opt/shibboleth-idp/metadata/sp-metadata.xml")の場所が含まれています。

次に、SAML 暗号化を有効にする。 すべてのファイルは、 {idp.home}/conf フォルダにあります。

  1. ファイル idp.properties を以下のプロパティに変更します。
    idp.encryption.optional = true

最後に、以下の 属性ポリシー liferaysp属性フィルター.xml ファイルを修正して追加します。

<AttributeFilterPolicy id="liferaysp">
    <PolicyRequirementRule xsi:type="Requester"
        value="https://localhost:8444"/>
    <AttributeRule attributeID="uid">
        <PermitValueRule xsi:type="ANY"/>
    </AttributeRule>
    <AttributeRule attributeID="mail">
        <PermitValueRule xsi:type="ANY"/>
    </AttributeRule>
    <AttributeRule attributeID="firstName">
        <PermitValueRule xsi:type="ANY"/>
    </AttributeRule>
    <AttributeRule attributeID="lastName">
        <PermitValueRule xsi:type="ANY"/>
    </AttributeRule>
    <AttributeRule attributeID="screenName">
        <PermitValueRule xsi:type="ANY"/>
    </AttributeRule>
</AttributeFilterPolicy>

チェックポイント

  1. Shibboleth 3 IdPに sp-metadata.xml が追加されました。
  2. 暗号化が有効になっています。
  3. の属性ポリシー が設定されています。

この時点で IdP インスタンスを再度起動します。 サーバーがエラーなく正常に起動し、LDAPに接続されていることを確認します。

SP主導のSSOを実行

  1. 別のブラウザウィンドウで、https://locahost:8444 に移動します。 また、キャッシュされたデータがないことを確認してください。
  2. 右上の サインイン リンクをクリックします。
  3. ブラウザが https://localhost:8443 の Shibboleth ページにリダイレクトされていることを確認してください。
  4. 以前に作成したユーザー名とパスワード(John Harrison / Khan)を入力します。
  5. ユーザーがDXP 7.0に署名されていることを確認してください。

追加情報

未指定名前識別子形式サービスプロバイダ で使用する代替方法は、 電子メールアドレスを使用することです。 IdP インスタンスに LDAP サーバーを接続するには、Shibboleth 3 IdP で追加のステップが必要です。

  1. DXP 7.0 コントロールパネル → 構成 → SAML Adminで、 サービス・プロバイダ タブに以下のように入力する。
    • 名前の識別子のフォーマット: メールアドレス
    • 属性マッピング.
      mail=emailAddress
      screenName=screenName
      firstName=firstName
      lastName=lastName
      uid=uuid
      
  2. 次に、メールアドレスを使用しているのでNameIdPolicyを設定します。
    • {idp.home}/conf フォルダに移動します。
    • のsaml-nameid.xmlファイルを開きます。
    • エントリのコメントを解除します。 <bean parent="shibboleth.SAML2AttributeSourcedGenerator" ...>
    • エントリのコメントを解除します。 <bean parent="shibboleth.SAML1AttributeSourcedGenerator" ...>
  3. 最後に、 属性リゾルバ.xml ファイルの属性定義を更新します。 これは、Liferay SAML SPを有効にする際に宣言された属性マッピングが原因です。 これらのマッピングは、上記で指定した5つの属性と一致している必要があります。

この時点で、IdP インスタンスは LDAP サーバーと通信してユーザーを認証することができます。 属性マッピングにもよりますが、シブブレスとSPの間で送られてくるリクエストには5つの値が含まれています。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています