次の方法で共有


シングル サインアウトの SAML プロトコル

Microsoft Entra ID では、SAML 2.0 Web ブラウザーのシングル サインアウト プロファイルがサポートされています。 シングル サインアウトを正しく機能させるには、アプリケーションの登録時に、アプリケーションの LogoutURL を Microsoft Entra ID で明示的に登録する必要があります。

アプリが Azure アプリ ギャラリーに追加された 場合、この値は既定で設定できます。 それ以外の場合は、Microsoft Entra テナントにアプリを追加するユーザーが値を決定して設定する必要があります。 Microsoft Entra ID では、ログアウト後に LogoutURL を使用してユーザーをリダイレクトします。Microsoft Entra ID は、HTTP POST バインドではなく、リダイレクト バインド (HTTP GET) をサポートしています。

次の図は、Microsoft Entra シングル サインアウト プロセスのワークフローを示しています。

Microsoft Entra シングル サインアウト ワークフローのスクリーンショット。

LogoutRequest

クラウド サービスは、セッションが終了したことを示す LogoutRequest メッセージを Microsoft Entra ID に送信します。 次の抜粋は、 LogoutRequest 要素のサンプルを示しています。

<samlp:LogoutRequest xmlns="urn:oasis:names:tc:SAML:2.0:metadata" ID="idaa6ebe6839094fe4abc4ebd5281ec780" Version="2.0" IssueInstant="2013-03-28T07:10:49.6004822Z" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
  <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://www.workaad.com</Issuer>
  <NameID xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> Uz2Pqz1X7pxe4XLWxV9KJQ+n59d573SepSAkuYKSde8=</NameID>
</samlp:LogoutRequest>

Microsoft Entra ID に送信される LogoutRequest 要素には、次の属性が必要です。

  • ID - サインアウト要求を識別します。 IDの値は数値で始めることはできません。 一般的な方法は、GUID の文字列表現に ID を 追加することです。
  • Version - この要素の値を 2.0 に設定します。 この値は必須です。
  • IssueInstant- これは、世界協定時刻 (UTC) 値とDateTime持つ文字列です。 Microsoft Entra ID はこの型の値を受け取りますが、適用されません。

SAML 2.0 コア仕様のセクション 3.7 では、アプリケーション以外にセッションに複数の参加者 (他のアプリケーション) が存在する可能性があります。 他の参加者の 1 人が Microsoft ID プラットフォーム (セッション機関) にLogoutRequestを送信すると、最初のLogoutRequestを送信した参加者を除くすべてのセッション参加者にLogoutRequestが送信されます。 別の参加者が同時にサインアウトを開始した場合、最初に Microsoft ID プラットフォームに到達する LogoutRequest を確認する競合が発生します。 そのため、アプリケーションは常に LogoutRequestを処理するように準備する必要があります。

発行者

IssuerLogoutRequest要素は、Microsoft Entra ID のクラウド サービスの ServicePrincipalNames のいずれかと正確に一致する必要があります。 通常、これは、アプリケーションの登録時に指定された アプリ ID URI に設定されます。

NameID

NameID要素の値は、サインアウトするユーザーのNameIDと正確に一致する必要があります。

SAML ログアウト要求中、 NameID 値は Microsoft Entra ID では考慮されません。
1 人のユーザー セッションがアクティブな場合、Microsoft Entra ID によってそのセッションが自動的に選択され、SAML ログアウトが続行されます。
複数のユーザー セッションがアクティブな場合、Microsoft Entra ID はユーザー選択のアクティブなセッションを列挙します。 ユーザーを選択すると、SAML ログアウトが続行されます。

LogoutResponse

Microsoft Entra ID は、LogoutResponse要素に応答してLogoutRequestを送信します。 次の抜粋は、サンプルの LogoutResponseを示しています。

<samlp:LogoutResponse ID="_f0961a83-d071-4be5-a18c-9ae7b22987a4" Version="2.0" IssueInstant="2013-03-18T08:49:24.405Z" InResponseTo="iddce91f96e56747b5ace6d2e2aa9d4f8c" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
  <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
  <samlp:Status>
    <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
  </samlp:Status>
</samlp:LogoutResponse>

Microsoft Entra ID は、ID 要素の VersionIssueInstant、および LogoutResponse 値を設定します。 また、応答を引き出したInResponseToID属性の値にLogoutRequest要素を設定します。

発行者

Microsoft Entra ID は、https://login.microsoftonline.com/<TenantIdGUID>/TenantIdGUID< が Microsoft Entra テナントのテナント ID である>にこの値を設定します。

発行者要素を正しく識別するには、サンプル LogoutResponse に示すように https://login.microsoftonline.com/<TenantIdGUID>/ 値を使用します。 この URL 形式は、Microsoft Entra テナントを発行者として識別し、応答の発行を担当する機関を表します。

ステータス

Microsoft Entra ID は、StatusCode 要素のStatus要素を使用して、サインアウトの成功または失敗を示します。サインアウト試行が失敗した場合、StatusCode要素にはカスタム エラー メッセージを含めることもできます。