Liferay DXPでのSAMLの導入と管理

このトラブルシューティングガイドは、既存のSAMLドキュメント を補完することを目的としています。 このガイドの情報は、最も一般的な使用例を示すために、より詳細に説明しています。

目次を見る

  1. はじめに
  2. 使用例1:Salesforceとの連携
  3. ユースケース2:LiferayをIdPとSPの両方として使用する場合
  4. ユースケース #3: メールアドレス以外のユーザー属性
  5. ユースケース #4: 安全なプロキシ接続を介した接続
  6. ユースケース #5: クラスター環境でのSAML
  7. SAMLの無効化
  8. トラブルシューティング

はじめに

繰り返しになりますが、Liferay SAMLは2つの異なる構成を提供しています。すなわち、アイデンティティ・プロバイダー(略称: IdP)としての構成と、サービス・プロバイダー(略称: SP)としての構成です。 管理者は、Liferay SAMLをADFS、Shibbolethのような他のSSO/SLOプロトコル、またはSalesforceなどのサードパーティの技術に接続することが多い。 Liferay Connector to SAML 2.0 プラグイン は、適切なバージョンを使用して Liferay DXP 7.0 から Liferay DXP 7.2 にデプロイする必要があります。 Liferay DXP 7.3 および今後の製品リリースには、コアリリースの一部として Connector プラグインが含まれています。 DXP 7.3用のプラグインのアップデートはfixpacksに含まれます。 Liferay Connector to SAML 2.0 プラグインの変更点の詳細については、リリースノートまたは変更ログを参照してください。

重要事項1:SAMLを使用するには、2つの異なるIPアドレス、または2つの異なるバーチャルホスト、または2つの異なるポートが必要です。 Windows環境では、管理者が etc/hosts ファイルにアクセスして、複数のバーチャルホストを作成することができます。 以下の例では、さまざまな設定を組み合わせて説明します。

解像度

ユースケース1:Salesforceインテグレーション。SPとしてのSalesforce。

管理者はSalesforceへのSSOリクエストを実行できます。 そのためには、Liferay DXPをIdPとして設定する必要があります( configuring Liferay DXP with SAML as an IdPを参照)。

  1. SAMLアプリを展開した状態で、Liferay DXPを起動する。
  2. コントロールパネルに移動 > Configuration > SAML Admin
  3. IdP enabledチェックボックスにフラグが立っていることを確認します。
  4. 証明書のダウンロード(Certificate and Private Keyセクション)をクリックします。
    Certificate_and_Private_Key.png
    .pem のファイルを保存します。 このファイルは、Salesforceのmetadata.xmlを生成するためにSalesforceで必要となります。
  5. コントロールパネル > ユーザー」に移動します。
  6. Salesforceへのサインインに使用したメールアドレスと同じメールアドレスで、新しいユーザーを作成します。 Do not use default test@liferay.com。
    1. ファーストネームセールスフォース
    2. 最後の名前管理者
    3. パスワード:samlidp1
  7. この新しいユーザーに完全な管理者の役割を与えます。

次の一連のステップは、Salesforceからメタデータファイルを生成することです。

  1. http://developer.force.comに移動します。
  2. 同じ有効なEメールアドレスを使ってアカウントを作成してください。 これは、ユーザーアカウントとしても機能します。 Salesforce アカウントのパスワードとして samlidp1 を使用します。
  3. サインイン後、 salesforce.comにアクセスし、ログインした後、[Setup]をクリックします。
  4. セキュリティコントロール > シングルサインオン設定」をクリックします。
  5. Edit をクリックし、SAML Enabled チェックボックスをチェックします。
  6. クリック 保存
  7. 新規をクリックします。
  8. を入力してください。
    • 名前:samlsp
    • 発行者:samlidp
    • エンティティID: https://saml.salesforce.com
    • ID プロバイダ証明書。samlidp.pemファイルのアップロード
    • Identity Provider Login URL: http://localhost:8080/c/portal/saml/sso
    • Identity Provider Logout URL: http://localhost:8080/c/portal/logout
    • SAML Identity Type:"Assertion contains User's salesforce.com username"
    • SAML Identity Locationの略。"Identity is in the NameIdentifier element of the Subject statement"
    07_-_samldxpsalesforce__1_.png
  9. Save」ボタンをクリックします。
  10. メタデータのxmlファイルをダウンロードして、 salesforce-metadata.xmlにリネームします。

次のステップで設定が完了します。

  1. Liferay DXPでは、コントロールパネル > 構成 >SAML Adminに移動します。
  2. Service Provider Connections」タブをクリックします。
  3. サービスプロバイダーの追加」ボタンをクリックします。
  4. を入力してください。
    • 名称:セールスフォース
    • エンティティID: https://saml.salesforce.com
    • Enabled」のチェックボックスにチェックを入れます。
    • Upload Metadata XML」をクリックします。
    • salesforce-metadata.xmlをアップロードします。
    • 名前の識別子の形式のドロップダウンから Unspecified を選択します。
    • staticを入力します。 名前 識別子 属性名 フィールドに {email address used to sign up for Salesforce without the braces of course} と入力します。
    • Attributes Enabled "にチェックを入れる
  5. 保存ボタンをクリック

SalesforceへのSSOの実行

  1. Liferay DXPで、メニュー > Liferay DXPサイトをクリックします。
  2. ユーザーが上記で作成したユーザー(例:Salesforce Admin)としてサインインしていることを確認してください。 そうでない場合は、一度サインアウトし、正しい認証情報で再度サインインしてください。
  3. クリックナビゲーション
  4. 公開ページ」の横にある3つの点のアイコンをクリックすると、 > 公開ページを追加します。
  5. 名前欄に Salesforce と入力します。
  6. タイプ」のドロップダウンから「 URLへのリンク 」を選択します。
  7. URL欄に入力してください。 http://localhost:8080/c/portal/saml/sso?entityId=https://saml.salesforce.com
  8. ページ追加ボタンをクリック
  9. システムはメインページにリダイレクトします。 Salesforceのページをクリックします。 再認証しなくてもsalesforce.comのサイトにリダイレクトされるはずです。

ユースケース2:LiferayをIdPとSPの両方として使用する場合

以下のユースケースでは、SAML 認証用に 2 つの Liferay DXP バンドルを構成し、一方をサービス・プロバ イダー(SP)として機能させ、もう一方をアイデンティティ・プロバイダー(IdP)として機能させる方法を 示している。 さらに、ユーザーは複数のSPを持つことができます。 すべてのSPは、個別にIdPに追加する必要があります。 以下の手順で、SP を IdP に追加します。

Set up Liferay as a SAML Identity Provider に関する既存のドキュメントは、埋め込みリンクを介して learn.liferay.com で見ることができます。

Liferay DXP に実装された変更により、以下の手順の ID プロバイダがサービスプロバイダと同じマシンにある場合、SLO が期待通りに動作するためには、ID プロバイダは別のドメイン名でアクセスする必要があります。 これは概念実証であるため、以下の手順では、ID プロバイダの明確なドメイン名を組み込む。

SPとしてLiferay DXPバンドルを設定する。

  1. 管理者としてサインインする
  2. 開いているメニューのアイコン -> Control Panel > Security > SAML Admin に移動します。
  3. Generalタブで
  • 選択 - SAML Role。サービスプロバイダー
  • Enter - エンティティID: samlsp
  • 保存をクリック
  • 証明書と秘密鍵」で「証明書の作成」をクリックします。
    • 通称。ジョー・ブロッグス
    • 組織ライフレイ
    • 組織単位。ライフレイ・インク
    • 産地ダイヤモンドバー
    • 州カリフォルニア州
    • 国。アメリカ
    • バリデーション(日数):356
    • 鍵のアルゴリズムRSA
    • 鍵の長さ(ビット):2048
    • キーパスワード:liferaysp
  • Enabled」にチェックを入れ、「Save」をクリックします。
  • Liferay DPX バンドルを IdP として設定すること。

    1. 管理者としてサインインする
    2. バンドルが liferaytest.comのバーチャルホストを使用するように設定し、ローカル環境のhostsファイルを設定してこのドメインを実行可能にします。
    3. 開いているメニューのアイコン -> Control Panel > Security > SAML Admin に移動します。
    4. Generalタブで
    • 選択 - SAML Role: Identity Provider
    • Enter - エンティティID:samlidp
  • 保存をクリック
  • 証明書と秘密鍵」で「証明書の作成」をクリックします。
    • 通称。ジョー・ブロッグス
    • 組織ライフレイ
    • 組織単位。ライフレイ・インク
    • 産地ダイヤモンドバー
    • 州カリフォルニア州
    • 国。アメリカ
    • バリデーション(日数):356
    • 鍵のアルゴリズムRSA
    • 鍵の長さ(ビット):2048
    • キーパスワード:liferayidp
  • General」タブで「Enabled」の隣のボックスをクリックし、「Save」をクリックします。
  • サービス・プロバイダー・コネクション」タブを選択し、「サービス・プロバイダーの追加」を選択します。
    • 名前:samlsp
    • エンティティID:samlsp
    • Enabled:チェック済み
    • メタデータのURLです。 http://localhost:8080/c/portal/saml/metadata
    • 名前の識別子の形式です。Eメールアドレス
    • 名前 識別子 属性名: emailAddress
  • 保存」をクリックすると、設定が正常に保存された場合は、「サービスプロバイダー接続」タブに戻ります。
  • サービスプロバイダーLiferay DXPバンドルに戻る。

    1. アカウントがサインアウトされている場合、管理者としてサインインする
    2. SAML Adminメニューに戻る
    3. Identity Provider Connections」を選択し、「Add Identity Provider」をクリックします。
    • 名前:samlidp
    • エンティティID:samlidp
    • Enabled:チェック済み
    • メタデータのURLです。 http://liferaytest.com:9080/c/portal/saml/metadata
    • 名前の識別子の形式です。Eメールアドレス
  • 保存」をクリック
  • SAML認証のテスト。

    1. テスト目的のみで、 本番では実行しないでくださいサービス プロバイダのランディング ページに Sign In ポートレットを追加します。 SAMLの設定が正しくない場合、SAML認証を完全にバイパスしてサービスプロバイダに直接ログインすることができます。
    2. SPバンドルからサインアウトする、または別のブラウザを使用する
    3. SPバンドルへのアクセス
    4. 右上の「Sign In」ボタンをクリックする
    5. この場合、ユーザーはIdPにリダイレクトされる必要があります。 http://liferaytest.com:9080/web/guest/home?...
    6. 提供されたポートレットを使ってサインインする
    7. ユーザーはSPにリダイレクトされ、そこでログインする必要があります。

    ユースケース #3: メールアドレス以外のユーザー属性

    Configuring Service Provider and Identity Provider Connections のドキュメントでは、Attribute Mappingと、期待通りに動作するためにマッピングをどのように構成する必要があるかについて説明しています。 以下の情報は、一部の ID プロバイダに見られる具体的な使用例を示しています。

    • ユーザーは、メールアドレス以外の属性を使って認証を行うことができます。 例えば、Salesforceの統合に関わるユースケースでは、ユーザーは「名前の識別子」を「Unspecified」に変更し、他の値を入力する必要があります(例:static:${salesforce-user-name} または static:${user-email-address}.
    • 他の属性の例としては、Shibbolethとの統合があります。 IdPがADFSやShibbolethで、SPがLiferayというユースケースもあります。 ADFSの設定に応じて、ファーストネームやラストネームなどの他の属性を使用することができます。 Shibbolethはスクリーンネームを使って認証することができます。 SPでは、「Name Identifier Format」を「Email Address」から「Unspecified」に変更します。

    ユースケース #4: 安全なプロキシ接続での接続

    一般的なDXP 7.0の環境では、2つのIdPとSPのサーバーだけでなく、それ以外のサーバーも通信していることがよくあります。 また、クラスター化された環境では、ロードバランサーサーバー(これは必須ではありませんが、非常に強く推奨されています)や、Webリクエストを処理するためのWebサーバーがあるかもしれません。 セキュリティを強化するために、管理者はデフォルトの https プロトコルではなく、 httpを使用します。 Liferay Connector to SAML 2.0プラグインは、アサーション・プロセスがHTTPからHTTPSにリダイレクトするように構成されている限り、IdPが開始したSSOとSPが開始したSSO の両方を実行することができます

    SAML コネクタ固有のプラグインに関するドキュメントは、 Configuring Service Provider and Identity Provider Connections ページにあります。 以下は、両方が設定するためのコンセプト段階の証拠です バンドルのLiferay DXP内HTTPSを とSAMLの管理ページ内で必要な構成。

    セキュアポート443へのリダイレクトを有効にする方法や構成は、アプリケーションサーバごとに異なりますが、DXP 7.0の portal-ext.propertiesで必要な変更は1つだけです。

    portal.instance.protocol=https
    web.server.protocol=https
    


    これらのプロパティが portal-ext.properties ファイルに追加されると、ポータルは送信される HTTPS メッセージを認識し、SAML アサーション・プロセスを通じて正常に送信されるようになる。

    最後に、管理者は SAML Admin Control Panelで SSL Required が有効になっていることを 確認する必要があります。 そのためには

    1. コントロールパネルへの移動 > Configuration > SAML Admin
    2. DXP 7.0のこのインスタンスがSAML IdPサーバーとして構成されている場合は、Identity Providerタブの SSL Required チェックボックスをチェックします。
      Identify_Provider_-_SSL_Required.png
    3. SAML SPサーバーとして設定されたDXP 7.0インスタンスの場合も同様である。 サービスプロバイダー」タブの「 SSL Required 」チェックボックスをチェックします。
      サービス_プロバイダー_-_SSL_Required.png
    4. クリック 保存.

    ユースケース #5: クラスター環境でのSAML

    この 公式ドキュメントの「クラスター環境でのSAMLの設定」のセクションを参照してください。

    SAMLの無効化

    SAMLを無効にするにはいくつかの方法があります。 それぞれの方法は微妙に異なり、様々な状況を反映しています。

    ユースケース1:UIを通じて
    IdPとしてDXP 7.0が設定されているとします。 最も簡単な方法は、コントロールパネルのUIを使って、このインスタンスのSSO/SLO機能を無効にすることです。 SAMLを有効にして動作している他のインスタンスを無効にする必要があります。

    1. システム管理者としてサインインします。
    2. コントロールパネル→設定→SAML管理者ます。
    3. General タブの Enabled チェックボックスのチェックを外します。
      Service_Provider_-disable.png
    4. クリック 保存.

    この時点では、Liferay SAMLアプリはプラットフォーム上に展開されていますが、ユーザーはSSOなしでサインインすることになります。

    ユースケース2:URLの調整
    このシナリオでは、SPとしてDXP 7.0が設定されていると仮定します。 サービスプロバイダーとして、プラットフォームはIdPまたはADFSのようなアクティブディレクトリとして構成された別のインスタンスに接続されます。 デフォルトのゲストサイトにはSign Inアプリケーションがないため、ユーザーはSAMLを使用してサインインする必要があります。 SSOを回避してプラットフォームにアクセスするには、URLを変更することで可能となります。

    次のように付け加えます。 ?p_p_id=com_liferay_login_web_portlet_LoginPortlet&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&saveLastPath=false&_com_liferay_login_web_portlet_LoginPortlet_mvcRenderCommandName=%2Flogin%2Flogin をURLの最後に追加しています。

    例を示します。 http://www.able.com:8080?p_p_id=com_liferay_login_web_portlet_LoginPortlet&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&saveLastPath=false&_com_liferay_login_web_portlet_LoginPortlet_mvcRenderCommandName=%2Flogin%2Flogin

    サインインした後、システム管理者は最初のユースケースと同じ方法でLiferay SAML Providerを非活性化することができる。 前述の通り、Sign InアプリケーションはSAML認証機能をバイパスしており、その拡張URLを使って呼び出されていました。 ランディングページが/ web / guest / homeにない場合は、 サインイン アプリケーションをページに追加します。
    Service_Provider_-_login_portlet.png
    この図は、SAMLをバイパスするモックアップページへのサインインアプリの追加を示しています。

    使用例3:OSGiを使用する config File
    この使用例では、バックエンドからSAMLを無効にします。 DXP 7.0ではOSGiが実装されているため、リスクが少なく、ランタイムペナルティも少なくなっています。 このユースケースでは、1) データベースの configuration_ テーブルで値を見つけることと、2) config ファイルを作成することの 2 つが必要です。

    1. どのようなデータベースであれ、 configuration_ テーブルを検索します(例:MySQL 5.7 Command Line Client では、 select * from configuration_ ˶‾᷅;. 注: はオプションで、値を読みやすくしています)。)
    2. com.liferay.saml.runtime.configuration.SamlProviderConfiguration.xxxxxx.xxxx.xxxx.x を探してください(ここでの番号部分はそれぞれのケースで違って見えます)。
    3. /osgi/configs フォルダの中に、code>com.liferay.saml.runtime.configuration.SamlProviderConfiguration-xxxxxxx.xxxxxxx.config という名前のファイルを作成します。
      • 重要な注意点1: には、 には、ID文字列が含まれていなければなりません。
      • 重要な注意点 2: はハッシュ値を ハイフンで区切って ...SAMLProvider Configuration... としなければなりません。 (例: com.liferay.saml.runtime.configuration.SamlProviderConfiguration-bda43632-74fc-458a-9bb7-5f4c4e81fb96) です。
    4. そのファイルの中に、以下のように入力します。 enabled=B "false".

    手順が完了すると、Liferay SAML Providerは無効になり、インスタンスを再起動しても再び有効になることはない。 SAMLを再び有効にするには、このファイルを削除するか、値を saml.enabled=trueに戻してください。



    トラブルシューティング

    SAMLの問題は、多くの場合、設定の問題です。 ユーザーがステップをスキップしたり、値を間違って入力した可能性があります。 とはいえ、よくある質問についてはここで紹介しています。

    1. どちらのインスタンスでもSLOを実行できません。
    通常、この現象は次のようなシナリオの1つ以上によって引き起こされます。

    1. ユーザーが「サインイン」ポートレットで「私を覚えておいて」というフラグを立てることができません。
    2. SAML のタイムアウトは、Liferay のタイムアウトよりも短くなければならない。 この2つ目のシナリオでは、SAMLのタイムアウトがLiferayのタイムアウトよりも長い場合、システムは「Remember Me」がチェックされたかのように動作する。 解決策は、SAMLのタイムアウトを180秒に設定することです。
    3. ユーザーがポータル設定でslo_redirect以外のものを定義している。 コントロールパネル > のポータル設定に移動し、c/portal/saml/slo_redirectに変更します。

    2. IdPがメタデータのダウンロードに対応していない場合は? Liferay SPは、証明書のインストール(Salesforceと同様)をサポートしていますか?

    答え。SAML Metadata XMLを提供する必要があります。 これは、URLまたはファイルで提供されます。 IdP が SAML メタデータをサポートしていない場合は、XML ファイルを手動で作成する必要があります。

    3. セッションタイムアウトとアサーションライフタイムとは何ですか? どのように違うのですか?

    セッションタイムアウトとは、SAML IdPがSPへの接続を維持する時間のことです。 Liferay Portal の場合、SAML セッションのタイムアウトがポータルのタイムアウトよりも短いことを確認する。 ユーザーが活動していないためにセッションが終了した場合、ユーザーは再認証する必要があります。
    アサーションライフタイムとは、IdPとSPの間のアサーションがどのくらいの期間有効であるかを指します。 アサーションは、サーバーの時刻が同期していないと、期限切れになったり、認識されないことがあります。 通常、これは秒単位で計測されます。 これを修正するには、クロックスキュー機能を適宜調整します。

    4. 自分のカスタムキーストアをアップロードできますか?

    最新バージョンのLiferay SAML 2.0 Providerでは、管理者はデフォルトのバージョンを使用する代わりに、キーストア(.jks)ファイルを追加することができます。 Liferay Marketplaceから Liferay SAML 2.0 Provider version 3.1.0 をダウンロードします。 このバージョンには、DXP 7.0 Fix Pack DE-32以上が必要です。 古いLiferayのSAML 2.0プロバイダのバージョンがあります 3.0.0 ない ない 、この機能を持っています。

    アプリがデプロイされたら、次の手順を使用してプラットフォームを構成します。

    1. コントロールパネル → 設定 → システム設定に移動します。
    2. Foundation タブをクリックします。
    3. 検索対象 SAML KeyStoreManager実装構成.
    4. ドロップダウンから Filesystem Keystore Manager を選択し、 Saveをクリックします。
      SAML_-_KeystoreManager.png
    5. 前の検索結果がまだ表示されている場合は、 SAML Configurationをクリックします。 そうでなければ、検索してみてください。
    6. SAML Configuration ページで、新しいキーストアのパスを入力します。 デフォルトでは、キーストアは ${liferay.home}/data/keystore.jksに格納されています。
      SAML_-_KeyStorePath.png
    7. クリック 保存.
    8. この時点で、プラットフォームは新しいキーストアファイルを認識します。

    5. Liferay SAMLのコンフィグレーションは、データベースのどこに保存されていますか?

    Liferay SAML configurations は、DXP 7.0 (7.1も同様)では configuration_ というデータベーステーブルに格納されています。 3.1.0 バージョンのアプリでは、0 (7.1も同様)となっています (詳細は こちら)。 データベースのテーブルを調べたい場合は、それぞれのテーブルに格納されているデータを取得する方法について、データベースのマニュアルを参照してください。 たとえば、MySQLのコマンドコンソールで、 select * from configuration_ \G; と入力します( \G では、結果が縦に表示され、読みやすくなります)。

    以下のように表示されます。

    configurationId: com.liferay.portal.security.auth.verifier.internal.basic.auth.header.module.configuration.BasicAuthHeaderAuthVerifierConfiguration.f0d64ebc-896b-4606-b907-2edba57850ce
         dictionary: enabled="true"
    felix.fileinstall.filename="com.liferay.portal.security.auth.verifier.internal.basic.auth.header.module.configuration.BasicAuthHeaderAuthVerifierConfiguration-default.cfg"
    service.factoryPid="com.liferay.portal.security.auth.verifier.internal.basic.auth.header.module.configuration.BasicAuthHeaderAuthVerifierConfiguration"
    service.pid="com.liferay.portal.security.auth.verifier.internal.basic.auth.header.module.configuration.BasicAuthHeaderAuthVerifierConfiguration.f0d64ebc-896b-4606-b907-2edba57850ce"
    urlsExcludes="/api/liferay*"
    urlsIncludes="/api/*,/xmlrpc*"

    実際に保存されている設定値が表示されるまで、下にスクロールしてください。 この例では、このLiferay DXPインスタンスがIdPとして設定されており、その entityIdsamlidpで、キーストアのパスワードは passwordで、 SSL は必要ありません。

    configurationId: com.liferay.saml.runtime.configuration.SamlProviderConfiguration.338a3905-8765-4701-872b-7352cf975341
         dictionary: companyId=L"20115"
    saml.enabled="true"
    saml.entity.id="samlidp"
    saml.idp.authn.request.signature.required="true"
    saml.idp.session.maximum.age="0"
    saml.idp.session.timeout="0"
    saml.keystore.credential.password="password"
    saml.role="idp"
    saml.sign.metadata="true"
    saml.ssl.required="false"
    service.bundleLocation="?"
    service.factoryPid="com.liferay.saml.runtime.configuration.SamlProviderConfiguration"
    service.pid="com.liferay.saml.runtime.configuration.SamlProviderConfiguration.338a3905-8765-4701-872b-7352cf975341"
    

    SAMLアプリには、以下の のConfigurationIds が接続されています。

    com.liferay.saml.opensaml.integration.internal.transport.configuration.HttpClientFactoryConfiguration
    com.liferay.saml.runtime.configuration.SamlProviderConfiguration
    com.liferay.saml.runtime.configuration.SamlConfiguration

    重要な注意:従来のLiferay Portal 6.2にSAMLを導入しているお客様は、この変更に注意する必要があります。 これまでは、 PortalPreferencesというテーブルに保存されていました。

    追加情報

    以前のバージョンを参照するには、 SAML Comprehensive Quick Start Guide for Liferay Portalを参照してください。

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