Liferay DXPでのSAMLの展開と管理

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

 

目次

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

はじめに
繰り返しますが、Liferay SAMLは2つの異なる構成を提供します。IDプロバイダー(略称 はIdP)とサービスプロバイダー(略称 はSP)です。 管理者は多くの場合、いずれかの構成のLiferay SAMLを、ADFSなどのサードパーティのテクノロジー、Shibbolethなどの別のSSO / SLOプロトコル、またはSalesforceに接続します。 Liferay SAMLプラグインバージョン3.xは、Liferay DXPに固有です。 最新のSAMLプラグインバージョン3.xでの変更の詳細については、リリースノートまたは変更ログをご覧ください。

重要な注意1:SAMLを使用するには、2つの異なるIPアドレス、または2つの異なる仮想ホスト、または2つの異なるポートが必要です。 Windows環境では、管理者は etc / hosts ファイルに移動して、いくつかの仮想ホストを作成できます。 以下の例では、さまざまな設定の組み合わせをイラストとして使用します。

解決

使用例#1:Salesforceの統合:SPとしてのSalesforce。
管理者はSalesforceへのSSOリクエストを実行できます。 そのためには、LiferayのDXPは(参照のIdPとして設定する必要があります のIdPとしてSAMLと設定のLiferay DXP)。

  1. SAMLアプリをデプロイした状態でLiferay DXPを起動します。
  2. コントロールパネル > 構成 > SAML管理者に移動します。
  3. [IdPが有効]チェックボックスにフラグが設定されていることを確認します。
  4. [証明書のダウンロード](証明書と秘密キーのセクション)をクリックします。
    06_-_samldxpidp.PNG
    .pem ファイルを保存します。 このファイルは、Salesforce metadata.xmlを生成するためにSalesforceで必要です。
  5. Control Panel > Usersに移動します。
  6. Salesforceへのサインインに使用したものと同じメールアドレスで新しいユーザーを作成します。 やる ない 使用デフォルトtest@liferay.comを。
    1. 名:Salesforce
    2. 姓:管理者
    3. パスワード:samlidp1
  7. この新しいユーザーに完全な管理者ロールを付与します。

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

  1. http://developer.force.com
  2. 同じ有効なメールアドレスを使用してアカウントを作成します。 これはユーザーアカウントとしても機能します。 Salesforceアカウントのパスワードとしてsamlidp1を使用します。
  3. サインイン後、 salesforce.comアクセスしてログインし、[設定]をクリックします
  4. [セキュリティコントロール]をクリックし > シングルサインオン設定
  5. Edit をクリックし、SAML Enabledチェックボックスをオンにします。
  6. 保存クリックします
  7. クリック 新規
  8. 次のように入力します:
    • 名前:samlsp
    • 発行者:samlidp
    • エンティティID:https://saml.salesforce.com
    • IDプロバイダー証明書:samlidp.pemファイルをアップロードします
    • IDプロバイダーのログインURL:http:// localhost:8080 / c / portal / saml / sso
    • IDプロバイダーのログアウトURL:http:// localhost:8080 / c / portal / logout
    • SAML IDタイプ:「アサーションにはユーザーのsalesforce.comユーザー名が含まれています」
    • SAML IDの場所:「IDはSubjectステートメントのNameIdentifier要素にあります」
    07 _-_ samldxpsalesforce__1_.png
  9. 保存ボタンをクリックします。
  10. メタデータxmlファイルをダウンロードして、名前を salesforce-metadata.xml変更します。

次の手順で設定を完了します。

  1. Liferay DXPで、コントロールパネル > 構成 >SAML管理者に移動します。
  2. [サービスプロバイダーの接続]タブをクリックします。
  3. [サービスプロバイダーの追加]ボタンをクリックします。
  4. 次のように入力します:
    • 名前:salesforce
    • エンティティID:https://saml.salesforce.com
    • [有効]チェックボックスをオンにします。
    • [メタデータXMLのアップロード]をクリックします
    • salesforce-metadata.xmlアップロードし
    • Name Identifier Formatドロップダウンから Unspecified を選択し
    • Name Identifier Attribute Name フィールドに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管理者など)としてサインインしていることを確認します。 そうでない場合は、サインアウトして、正しい資格情報で再度サインインします。
  3. ナビゲーションをクリックします
  4. パブリックページの横にある3つのドットのアイコンをクリックします > パブリックページを追加します
  5. [名前]フィールドに Salesforce と入力します。
  6. [タイプ]ドロップダウンから[ Link to URL ]を選択します。
  7. URLフィールドに次のように入力します: http:// localhost:8080 / c / portal / saml / sso?entityId = https://saml.salesforce.com
  8. [ページを追加]ボタンをクリックします
  9. システムはメインページにリダイレクトされます。 Salesforceページをクリックします。 再認証せずにsalesforce.comサイトにリダイレクトする必要があります。

使用例#2:IdPとSP両方としてのLiferay

IdPインスタンスにSPを追加します。

この使用例では、LiferayはIdPとSPの両方として機能できます。 さらに、ユーザーは複数のSPを持つことができます。 すべてのSPをIdPに個別に追加する必要があります。 IdPにSPを追加するには、以下の手順に従います。

  1. すべてのSPインスタンスが開始されていることを確認します。 エンドポイントが無効であることを示すエラーメッセージが表示されるため、これは重要です。
  2. ユーザーがサインインであることを確認してください 「私を忘れないでください」せずに 確認しました。
  3. コントロールパネル > 構成 > SAML管理者に移動します。
  4. [サービスプロバイダーの接続]タブをクリックします。
  5. [サービスプロバイダーの追加]をクリックします。
  6. 次のように入力します:
    • 名前:samlsp
    • エンティティID:samlsp
    • 有効:オン
    • メタデータURL:http://www.alpha.com:9080/c/portal/saml/metadata
    • 名前識別子の形式:メールアドレス
    • 名前識別子属性名:emailAddress
    08 _-_ samldxpsp__1_.png
  7. 保存ボタンをクリックします。
  8. 追加する一意のSPごとにこれらを繰り返します。

すべてのSPが追加されると、Liferay SAMLはSSO / SLOを実行する2つの異なる方法を提供します。

IdPによって開始されたSSO / SLO

  1. 手順に従って、最初のLiferay DXPバンドルをIdPとして構成します。 サンプルSPの仮想ホスト名はwww.alpha.com:9080です。
  2. ユーザーがサインインであることを確認してください 「私を忘れないでください」せずに 確認しました。
  3. IdPブラウザーのURLで、次のように入力します
    http:// localhost:8080 / c / portal / saml / sso?entityId = samlsp&RelayState = http://www.alpha.com:9080
  4. IdPがSPにリダイレクトするのを確認します。 同じメールアドレスを持つ同じユーザーが両方のインスタンスに存在する場合は、SPを認証して表示します。 ユーザーがADFSであろうとLiferayインスタンスであろうと、1つのインスタンスでのみ検出された場合、認証は失敗します。 SAMLは主要なポータルバージョン間で認証できます。つまり、IdPはPortal 6.1 EE GA3またはLiferay Portal 6.2 EEで、SPはPortal 6.2です。 EE GA1またはLiferay DXP。 テストのために、IdPとSPが異なるポータルバージョンである場合に認証が成功するか失敗するかは明らかです。
  5. SPでは、別の時間にサインインする必要はありません。
  6. IdPを表示する新しいブラウザーウィンドウを開きます。 「サインアウト」をクリックします。
  7. すべてのインスタンスでSLOを実行するために実行されるJavaScriptがあります。 IdPがログアウトしたら、SPインスタンスに移動します。 SPインスタンスのブラウザウィンドウを更新します。
  8. SPもサインアウトします。

SPによって開始されたSSO / SLO

  1. www.able.com:9080のSPブラウザウィンドウで、右上の[サインイン]リンクをクリックします。 サインインポートレットを使用しないでください。
  2. ブラウザーはIdPインスタンスのサインインポートレットにリダイレクトします。
  3. サインイン。 「Remember Me」はチェックしないでください。
  4. システムはSPにリダイレクトされます。
  5. IdPに新しいブラウザーウィンドウを開きます。 この場合:localhost:8080。
  6. IdPはすでにサインインされています。
  7. SPインスタンスに移動します。
  8. 「サインアウト」をクリックします。
  9. IdPインスタンスに移動します。 ブラウザウィンドウを更新します。 IdPはログアウトされます。

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

ユーザーは、メールアドレス以外の属性を使用して認証できます。 たとえば、Salesforceの統合を伴うユース・ケースは未指定に名前識別子を変更し、他の値(例えば、静的入力するようにユーザが必要${salesforce-user-name} またはスタティック:${user-email-address}。
他の属性は、Shibbolethのと統合されている別の例を。 IdPがADFSまたはShibbolethであり、SPがLiferayであるユースケースがあります。 ADFSの構成方法に応じて、名や姓などの他の属性を使用できます。 Shibbolethは、スクリーン名を使用して認証できます。 SPで、名前識別子の形式を電子メールアドレスから未指定に変更します。


使用例#4:安全なプロキシ接続を介した接続

多くの場合、典型的なDXP 7.0環境では、互いに通信している2つのIdPサーバーとSPサーバーだけではありません。 また、クラスター化された環境と、Web要求を処理するWebサーバーに、ロードバランサーサーバー(実際に必要でない場合は、これを強くお勧めします)も存在する可能性があります。 セキュリティを強化するために、管理者はデフォルトの http代わりに https プロトコルを使用します。 DXP 7.0にデプロイされたSAMLプラグインは、アサーションプロセスがHTTPからHTTPSにリダイレクトするように設定されている限り、IdPによって開始されたSSOとSPによって開始されたSSO 両方を実行できます。

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

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


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

最後に、管理者 必見 いることを確認してください SSLが必要 SAML管理者コントロールパネルで活性化されます。 そうするには:

  1. コントロールパネル > 構成 > SAML管理者に移動します。
  2. DXP 7.0のこのインスタンスがSAML IdPサーバーとして構成されている場合は、[IDプロバイダー]タブの[ SSLが必要 チェックボックスをオンにします。
    09 _-_ samldxpidp.PNG
  3. SAML SPサーバーとして構成されたDXP 7.0インスタンスについても同様です。 [Service Provider]タブの[ SSL Required チェックボックスをオンにします。
    10 _-_ samldxpsp__1_.png
  4. [ 保存クリックします。

使用例#5:クラスター環境でのSAML

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

SAMLの無効化

SAMLを無効にする方法はいくつかあります。 それぞれの方法は少し異なり、さまざまな状況を反映しています。

使用例1:UIを介して
DXP 7.0がIdPとして構成されていると想定します。 最も簡単な方法は、コントロールパネルのUIを使用することであり、このインスタンスのSSO / SLO機能を無効にします。 SAMLを有効にして実行している他のインスタンスを無効にする必要があります。

  1. システム管理者としてサインインします。
  2. コントロールパネル→構成→SAML管理ます。
  3. General タブの Enabled チェックボックスをオフにします。
    11 _-_ samldxpdisable__1_.png
  4. [ 保存クリックします。

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

使用例2:URLの調整
このシナリオでは、DXP 7.0がSPとして構成されていると想定します。 サービスプロバイダーとして、プラットフォームはIdPまたはADFSなどのアクティブディレクトリとして構成された別のインスタンスに接続されます。 デフォルトのゲストサイトにはサインインアプリケーションがないため、ユーザーは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 =%2Fログイン%2Fログイン

例: http://www.able.com:8080?p_p_id=com_liferay_login_web_portlet_LoginPortlet&p_p_lifecycle = 0&p_p_state =最大化&p_p_mode =図&saveLastPath =偽&_com_liferay_login_web_portlet_LoginPortlet_mvcRenderCommandName =%2Fログイン%2Fログイン

サインインすると、システム管理者は最初の使用例と同じ方法でLiferay SAMLプロバイダーを非アクティブ化できます。 上記のように、サインインアプリケーションはSAML認証機能をバイパスし、その拡張URLを使用して呼び出されました。 ランディングページが/ web / guest / homeにない場合は、 サインイン アプリケーションをページに追加します。

12_-samldxpdisable__1_.png

この画像は、SAMLをバイパスするモックアップページへのサインインアプリの追加を示しています。

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

  1. どのデータベースでも、 configuration_ テーブルを検索します(例:MySQL 5.7コマンドラインクライアントでは、 select * from configuration_ \ G;。 注: \ G はオプションです。値が読みやすくなります)。
  2. com.liferay.saml.runtime.configuration.SamlProviderConfiguration.xxxxxxx.xxxx.xxxx.x を探します(ここで番号が付けられている部分は、それぞれのケースで異なります)。
  3. / osgi / configs フォルダーに、code>com.liferay.saml.runtime.configuration.SamlProviderConfiguration-xxxxxxx.xxxx.xxxx.xxxx.configという名前のファイルを作成します。
    • 重要な注意1:それは 必見 IDの文字列が含まれています。
    • 重要な注意2: 必見 使用からハッシュ値を分離するために、ハイフン ... SAMLProvider設定... (例えば com.liferay.saml.runtime.configuration.SamlProviderConfiguration-bda43632-74fc-458a- 9bb7-5f4c4e81fb96)。
  4. そのファイル内で、次のように入力します saml.enabled = false

手順が完了すると、Liferay SAMLプロバイダーは無効になり、インスタンスを再起動する必要がある場合は再び有効になりません。 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メタデータXMLを提供する必要があります。 これは、URLまたはファイルを介して提供できます。 IdPがSAMLメタデータをサポートしていない場合は、XMLファイルを手動で作成する必要があります。

3。 セッションタイムアウトとアサーションライフタイムとは何ですか? それらはどう違いますか?

セッションタイムアウトは、SAML IdPがSPに接続されたままになる時間を指します。 Liferayポータルのコンテキストでは、SAMLセッションタイムアウトがポータルのタイムアウトよりも短いことを確認してください。そうしないと、SLOが機能しません。 ユーザーの非アクティブのためにセッションが終了した場合、ユーザーは再認証する必要があります。
アサーションライフタイムは、IdPとSPの間のアサーションが有効な期間を指します。 サーバーの時刻が同期していない場合、アサーションは期限切れになるか、認識されない可能性があります。 通常、これは秒単位で測定されます。 これを修正するには、それに応じてクロックスキュー機能を調整します。

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

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

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

  1. コントロールパネル→構成→システム設定ます。
  2. Foundation タブをクリックします。
  3. SAML KeyStoreManager Implementation Configuration検索し
  4. ドロップダウンから Filesystem Keystore Manager 選択し、 Updateをクリックします。
    13 _-_ samldxpjks__1_.png
  5. 以前の検索結果が引き続き表示される場合は、[ SAML構成]をクリックします。 それ以外の場合は、検索してください。
  6. [ SAML Configuration ページで、新しいキーストアへのパスを入力します。 デフォルトでは、キーストアは ${liferay.home}/data/keystore.jks保存されます。
    14 _-_ samldxpjks.png
  7. [ 保存クリックします。
  8. この時点で、プラットフォームは新しいキーストアファイルを認識します。

5。 Liferay SAML構成はデータベースのどこに保存されますか?

のLiferay SAML構成は、データベーステーブルに格納されていると呼ばれる CONFIGURATION_ のように(ならびに7.1)DXP 7.0での 3.1.0 アプリケーションのバージョン(詳細参照 ここで)。 データベーステーブルを検査する場合は、それぞれのテーブルに格納されているデータを取得する方法について、データベースのマニュアルを参照してください。 たとえば、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として構成されています。その 実体識別子 である samlidp、キーストアパスワードは パスワード、及び 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"

次の configurationIds はSAMLアプリに接続されています。

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人がこの記事が役に立ったと言っています