Authenticating with SAML
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

SAML Authentication Process Overview

IdP と SP の両方がシングル サインオン プロセスを開始できますが、SSO フローはそれぞれによって異なります。 開始方法に関係なく、SSO は SP と IdP 間の HTTPS 用に構成されるため、すべてのトランスポート レベルの通信は暗号化されます。 SAML リクエストは、Liferay で設定された証明書と、 SAML 2.0 仕様で定義されている SAML Web ブラウザ SSO プロファイルを使用して署名されます。 応答は常に HTTP-POST または HTTP-Redirectを使用して送信されます。 HTTP-POST は、URL が長すぎてブラウザが処理できないリスクを軽減するため推奨されます。

アイデンティティプロバイダによるSSO

場合によっては、ユーザーはブラウザから IdP に直接リクエストを送信して SSO サイクルに入ることがあります。

アイデンティティ プロバイダー開始 SSO は直接認証します。

IdPへのSSOリクエスト

Liferay が IdP の場合、IdP が開始した SSO URL:

  • パスを /c/portal/saml/ssoとして指定する必要があります。
  • 以前に構成されたサービス プロバイダー接続 (SPC) の識別子である entityId パラメーターを含める必要があります。
  • 認証が成功するとユーザーがリダイレクトされる URL エンコードされた値を含む RelayState パラメータが含まれる場合があります。 この URL は、目的の SPC 上の場所を指す必要があります ( SAML 2.0 標準セクション 3.4.3によれば、この値 の長さは 80 バイトを超えてはなりません )。 SSO が実行された後のランディング ページを指定すると便利です。

Liferay 以外の IdP (Siteminder、ADFS など) の場合は、IdP が開始する SSO URL の構築に関するベンダーのドキュメントを参照してください。

IdP はユーザーが認証されていないと判断した場合、適切なログイン画面をユーザーに表示します。

IdPからのSSOレスポンス

認証が成功すると、IdP は SAML 応答を構築します。 これには、指定されたサービスプロバイダー接続 (SPC) で構成された属性ステートメントが含まれます。Liferay の SAML アダプターで SPC を設定する方法については、「 インスタンス レベルでの SAML の構成 」を参照してください。

IdP はアサーション コンシューマー サービス URL に応答を送信します。 リクエストには、 SAMLResponseRelayStateの 2 つのパラメーターが含まれています。

SAML 応答を送信する方法 (HTTP-POST など) とアサーション コンシューマ サービス URL は、通常、SP によって提供される SAML メタデータ XML の一部としてインポートされます。 Liferay DXP では、SAML アダプタのサービス プロバイダー接続タブに SP のメタデータをインポートします。

SPはSSOレスポンスを処理する

SP は SAML レスポンスを検証し、処理します。 Liferay の SAML ソリューションでは、署名された SAMLResponse メッセージが必要です。 この署名プロセスにより、IdP の適切な識別が保証され、SAML 応答のなりすましの可能性が防止されます。

  • 1 つの Liferay インスタンスが IdP で、もう 1 つが SP である場合は、SP にインポートされた SAML メタデータ XML ファイルに IdP の証明書が含まれていることを確認してください。
  • Liferay が IdP で、別のアプリケーションが SP である場合は、IdP から証明書をエクスポートし、SP の証明書ストアにインポートします。

SAML レスポンスに RelayState が含まれている場合、ユーザーはそこにリダイレクトされます。 それ以外の場合は、SP のホームページが提供されます。

サービスプロバイダーによるSSO

ほとんどの場合、認証要求はサービス プロバイダーから送信されます。

サービス プロバイダー開始 SSO は、通常の認証要求のソースです。

SPへのSSOリクエスト

ユーザーのブラウザが SP 上の保護されたリソースまたはログイン URL を要求すると、SP によって開始される SSO プロセスがトリガーされます。 Liferay DXP が SAML SP の場合、SSO は /c/portal/login URL または認証を必要とする保護されたリソース(たとえば、ゲスト ロールでは表示できないドキュメント)を要求することによって開始されます。 ユーザーが保護されたリソースを要求すると、その URL が RelayState パラメータに記録されます。 ユーザーが /c/portal/loginを要求した場合、 RelayStateredirect パラメータを指定して設定できます。 それ以外の場合、 ポータルプロパティ auth.forward.by.last.pathtrueに設定されている場合、最後にアクセスされたパスが RelayStateとして設定されます。 Liferay 以外の SP の場合は、SSO の開始に関するベンダーのドキュメントを参照してください。

IdPへの認証リクエスト

SP は IdP のシングル サインオン サービス URL を検索し、 AuthnRequestを送信します。 Liferay が SP の場合、設定された SAML アイデンティティプロバイダー接続を検索し、SAML メタデータ XML ドキュメントで定義されている IdP のシングルサインオンサービス URL に SAML AuthnRequest を送信します。 Liferay は、HTTP-POST または HTTP-Redirect バインディングを使用した AuthnRequest の送受信をサポートしています。 HTTP-POST が推奨されます。

ユーザーにアクティブなセッションがない場合、または SP によって ForceAuthn が要求された場合、ユーザーは資格情報を提供して認証する必要があります。 Liferay が IdP の場合、認証はログイン ポートレットで行われます。 Liferay は、ユーザーに認証を要求する前に、 AuthnRequest をデコードして検証します。

ForceAuthn オプションを構成するには、 グローバル メニュー (Applications Menu icon) を開き、 コントロール パネルSAML 管理アイデンティティ プロバイダー接続の詳細に移動します。

IdPからのSSOレスポンス

認証後、SAML レスポンスが作成され、SP のアサーション コンシューマー サービス URL に送信され、検証されます。 IdP は SP メタデータに基づいてこの選択を自動的に行います。

Liferay が IdP として設定されている場合、サービス プロバイダー接続で設定されたすべての属性が属性ステートメントとして応答に含まれます。 アサーション コンシューマー サービス URL は、SP の SAML メタデータ XML から検索されます。

Liferay が SP として設定されている場合、応答とアサーションの署名が検証されます。 Liferay では送信者の認証が必要です。 これは、発行 IdP からのメッセージ全体の署名を介して行われます。 署名のない応答は認証されていないとみなされ、応答は拒否されます。 Liferay SP または IdP 以外のベンダーの場合は、それぞれのドキュメントを参照してください。

ユーザーは、要求されたリソースまたは RelayState パラメータに含まれる URL (たとえば、SSO を開始する前にユーザーが最後にアクセスしたページ) にリダイレクトされます。

シングルログオフ

シングル ログオフ要求はユーザーのブラウザから IdP または SP に送信され、SLO フローはそれぞれの場合で異なります。 まず、IdP によって開始された SLO を検討します。

アイデンティティプロバイダが開始するSLO

アイデンティティ プロバイダー開始 SLO は、ユーザーのブラウザーによって IdP に直接送信されます。

IdPへのSLOリクエスト

IdP が開始した SLO リクエストは、ユーザーのブラウザによって IdP に直接送信されます。 LiferayがIdPの場合、IdPが開始するSSO URLはURLパスを次のように指定する必要があります。

/c/portal/logout

ユーザーが構成されたいずれかの SP にサインオンしている場合、SAML はログアウト プロセスを引き継ぎ、サインオンされているすべてのサービスを表示します。 シングル ログアウト画面には、各 SP の認証ステータスと、ログアウトできない SP があるかどうか (たとえば、SP がダウンしているか、SLO をサポートしていないか) が表示されます。 Liferay 以外の IdP (Siteminder、ADFS など) の場合は、IdP が開始する SLO URL の構築に関するベンダーのドキュメントを参照してください。

IdP は SAML LogoutRequest を SP に送信します。

  • Liferay が IdP として設定されている場合、 LogoutRequest は HTTP-POST、HTTP-Redirect、または SOAP バインディングのいずれかを使用して送信されます。 HTTP-Post バインディングが優先されますが、それがない場合は、サポートされているバインディングを持つ最初の利用可能な SLO エンドポイントが選択されます。
  • Liferay が SP として設定されている場合、 LogoutRequest でサポートされるバインディングは、HTTP-Post、HTTP-Redirect、または SOAP です。
  • その他の IdP または SP については、ベンダーのドキュメントを参照してください。

SPからのSLO応答

SP は LogoutResponse を IdP に配信します。

IdP は SAML LogoutRequest を 2 番目の SP に送信します。

次に、2 番目の SP は LogoutResponse を IdP に配信します。 このプロセスは、ユーザーがログインしているすべての SP に対して繰り返されます。 Liferay が IdP の場合、最後の SP が LogoutResponse を配信するか、タイムアウトした後、Liferay はユーザーをログアウトします。

サービスプロバイダーが開始するSLO

サービス プロバイダー開始 SLO は、ユーザーのブラウザーが SP にログアウト要求を送信したときに発生します。

SPへのSLOリクエスト

SP が開始する SLO では、ユーザーのブラウザがログアウト要求を SP に直接送信します。 Liferay が SP として設定されている場合、次のログアウト URL を要求することによって SLO が開始されます。

/c/portal/logout

その他の SP については、SLO の開始に関するベンダーのドキュメントを参照してください。

SAML LogoutRequest が IdP のシングル ログアウト サービス URL に送信されます。

  • Liferay が SP として機能する場合、 LogoutRequest は、SAML プロバイダーの IdP 接続タブで設定された IdP (IdP 接続を設定するには、 Liferay をアイデンティティプロバイダーとして設定する を参照) と、SAML メタデータで定義された SLO サービス URL に送信されます。

  • Liferay が IdP の場合、ユーザーが他の SP にログオンしていると、各 SP のログアウトのステータスを示す単一のログアウト画面が表示され、ログアウトできない SP にはフラグが付けられます (一部の SP は SLO をサポートしていないか、現在ダウンしている可能性があります)。 ログアウトする他の SP がない場合、SAML セッションは終了し、IdP はそのセッションを破棄します。

SPからのSLO応答

ユーザーが追加の SP (開始 SP 以外) にログインしている場合、IdP は各 SP に SAML LogoutRequest を送信します。 Liferay が IdP の場合、 LogoutResponse は、HTTP-Post、HTTP-Redirect、または SOAP バインディングのいずれかを使用して送信されます。

各 SP は LogoutResponse を IdP に配信します。 Liferay が SP の場合、 LogoutResponse は、HTTP-Post、HTTP-Redirect、または SOAP リクエストへの直接応答のいずれかを使用して送信されます。

追加の SP がすべて LogoutResponseを IdP に配信すると、IdP は SSO セッションを破棄します。 Liferay が IdP の場合、最後の SP が LogoutResponse を配信するかタイムアウトすると、IdP は Liferay セッションを破棄し、ユーザーをログアウトします。

最後に、IdP は SLO を開始した SP に LogoutResponse を送信します。 開始 SP は SAML セッションを終了し、ユーザーをログアウトします。