Azure Active Directory B2C でのシングル サインオン セッション プロバイダー

Azure Active Directory B2C でのセッション動作の構成」の記事では、Azure AD B2C カスタム ポリシーのセッション管理について説明しています。 この記事では、カスタム ポリシー内の個々の技術プロファイルのシングル サインオン (SSO) 動作をさらに構成する方法について説明します。

たとえば、テナント全体の SSO に対してポリシーを構成しますが、アクティブな SSO セッションに関係なく、常に多要素ステップを実行する必要があります。 多要素技術プロファイルのセッション プロバイダーを構成することで、この動作を実現できます。

セッション プロバイダーは、次の 2 つのフローに適用できます。

  • 新しいログオン
    • ユーザーが初めてログインすると、セッションはありません。 セッション プロバイダーを使用する技術プロファイルは、セッション参加要素になります。
    • セッション プロバイダーは、セッション Cookie に要求を書き込む可能性があります。
  • Subsequent のログイン
    • ユーザーがアクティブなセッションを持っている場合、セッション Cookie の一部である要求が要求バッグに読み込されます。
    • セッション Cookie の一部である要求は更新できません。
    • セッション プロバイダーは、要求バッグに追加の要求を発行できます。これは、この技術プロファイルが SSO 条件で実行されたことを示します。
    • 技術プロファイルはスキップできます。

特定の技術プロファイルに選択されたセッション管理プロバイダによって、セッション動作はアクティブなるかまたは抑制されます。 次の一覧は、セッション プロバイダーを使用して考えられる多くの例を示しています。

  • 後続のログオン (SSO) 中にユーザー インターフェイスが中断されるのを防ぐか、強制します。
  • 後続のログオン (SSO) 中に選択した ID プロバイダーを覚えておいてください。
  • 後続のログオン (SSO) 中にディレクトリへの読み取り操作の数を減らします。
  • ソーシャル ID プロバイダーセッションを追跡して、ID プロバイダーのサインアウトを実行します。
  • シングル サインアウトのために、ログインしている証明書利用者アプリケーションを追跡します。

セッション プロバイダー

技術プロファイルが SSO セッションを処理する方法を管理するには、5 つのセッション プロバイダーを使用できます。 技術プロファイルを構成するときに、最適なセッション プロバイダーを選択する必要があります。

次の表は、管理する技術プロファイルの種類に応じて使用するセッション プロバイダーを示しています。 一部のセッション プロバイダーでは、セッション Cookie に対する要求の読み取りおよび書き込みを許可します。

セッション プロバイダー 適用可能な技術プロファイルの種類 目的 要求の書き込み 要求の読み取り
DefaultSSOSessionProvider 自己主張Azure Active DirectoryAzure AD 多要素認証要求の変換 技術プロファイルの実行をスキップします。 はい はい
ExternalLoginSSOSessionProvider OAuth1 ID プロバイダーOauth2 ID プロバイダーOpenID Connect ID プロバイダーSAML ID プロバイダー ID プロバイダーの選択ページを加速します。 シングル ログアウトの実行。 はい はい
OAuthSSOSessionProvider JWT トークン発行者 OAuth2 または OpenIdConnect 証明書利用者と Azure AD B2C 間のセッションを管理します。 シングル ログアウトを実行します。 いいえ いいえ
SamlSSOSessionProvider SAML トークン発行者 SAML 証明書利用者と Azure AD B2C 間のセッション管理します。 シングル ログアウトを実行します。 いいえ いいえ
NoopSSOSessionProvider Any セッションに含まれる技術プロファイルを抑制します。 いいえ いいえ

次の図は、Azure AD B2C で使用されるセッションの種類を示しています。

Diagram showing the Azure AD B2C types of session providers.

セッション プロバイダーの参照

テクニカル プロファイルでセッション プロバイダを使用するには、次の手順を実行します。

  1. 適切なセッション管理技術プロファイルを作成します。 Azure AD B2C スターター パックには、最も一般的なセッション管理技術プロファイルが含まれています。 既存のセッション管理技術プロファイルを参照できます (該当する場合)。

    次の XML スニペットは、スターターパックのSM-AADセッション管理技術プロファイルを表しています。 提供されるセッションは、DefaultSSOSessionProviderの種類です。

    <TechnicalProfile Id="SM-AAD">
      <DisplayName>Session Mananagement Provider</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <PersistedClaims>
        <PersistedClaim ClaimTypeReferenceId="objectId" />
        <PersistedClaim ClaimTypeReferenceId="signInName" />
        <PersistedClaim ClaimTypeReferenceId="authenticationSource" />
        <PersistedClaim ClaimTypeReferenceId="identityProvider" />
        <PersistedClaim ClaimTypeReferenceId="newUser" />
        <PersistedClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" />
      </PersistedClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true" />
      </OutputClaims>
    </TechnicalProfile>
    
  2. 技術プロファイル内のセッション管理技術プロファイルを参照します。 これにより、後続のログオン (SSO) 時に、その技術プロファイルの動作を制御できます。

    技術プロファイルからセッション管理技術プロファイルを参照するには、UseTechnicalProfileForSessionManagement 要素を追加します。 次の例は、SM-AADセッション管理技術プロファイルの使用を示しています。 ReferenceId をセッション管理技術プロファイルの ID に変更します。

    <TechnicalProfile Id="{Technical-profile-ID}">
      ...
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
    </TechnicalProfile>
    

重要

技術プロファイルがセッション管理プロバイダーを参照しない場合は、DefaultSSOSessionProvider セッション プロバイダーが適用され、予期しない動作が発生する可能性があります。

Note

更新トークン フロー中、セッション管理プロバイダーは呼び出されません。 新しいアクセス トークンを発行しようとする試みはすべて、発行された元の要求のコピーです。

セッション要求の管理

セッション管理技術プロファイルは、カスタム ポリシーの実行中に読み取り、書き込み、または出力できる要求を制御します。

セッション管理技術プロファイルの中で、PersistedClaimsOutputClaimsの要素を使用して要求を管理します。

  • 永続化された要求 - セッション Cookie に書き込み可能な要求。
    • 要求をセッション Cookie に書き込むには、現在の要求バッグの一部である必要があります。
    • 書き込まれるすべての要求は、後続のログオン (シングル サインオン) 中に自動的に返されます。 出力要求を指定する必要はありません。
  • 出力要求 - 後続のログオン (シングル サインオン) 中に要求バッグに出力できる追加の要求。 出力要求はセッションから返されないので、既定値を設定する必要があります。

永続化された要求要素と出力要求要素は、次の XML スニペットで示されています。

<TechnicalProfile Id="SM-AAD">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
  </PersistedClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true"/>
  </OutputClaims>
</TechnicalProfile>

DefaultSSOSessionProviderおよびExternalLoginSSOSessionProviderセッション管理プロバイダーは、次の場合に要求を管理するように構成できます。

  • 新しいログオン
    • PersistedClaims要素は、セッション Cookie に要求を書き込みます。 永続化された要求は書き換えできません。
  • Subsequent のログイン
    • セッション Cookie に書き込まれるすべての要求は、要求バッグに出力されます。これは、次のオーケストレーション手順で使用できます。
    • OutputClaims要素は、静的な要求を要求バッグに出力します。 DefaultValue属性を使用して、出力要求の値を設定します。

DefaultSSOSessionProvider

DefaultSSOSessionProviderセッション プロバイダーは、後続のログオン (シングル サインオン) 中に要求を管理し、技術プロファイルをスキップするように構成できます。 DefaultSSOSessionProviderは、後続のログオン時 (シングル サインオン) で取得されない、後続のオーケストレーション手順で必要な要求を保持して発行するために使用する必要があります。 たとえば、ディレクトリからのユーザー オブジェクトの読み取りによって取得される可能性がある要求などです。

次のSM-AAD技術プロファイルは、DefaultSSOSessionProviderセッション プロバイダーの種類です。 SM-AAD技術 プロファイルは、カスタム ポリシー スターター パックにあります。

<TechnicalProfile Id="SM-AAD">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
    <PersistedClaim ClaimTypeReferenceId="signInName" />
    <PersistedClaim ClaimTypeReferenceId="authenticationSource" />
    <PersistedClaim ClaimTypeReferenceId="identityProvider" />
    <PersistedClaim ClaimTypeReferenceId="newUser" />
    <PersistedClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" />
  </PersistedClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true"/>
  </OutputClaims>
</TechnicalProfile>

たとえば、SM-AADセッション管理技術プロファイルは、DefaultSSOSessionProviderセッション プロバイダーを使用します。 カスタム ポリシー スターター パックからSelfAsserted-LocalAccountSignin-Email技術プロファイルに適用すると、次のように動作します。

  • 新しいログオン
    • セッション管理技術プロファイル (SM-AAD) は、signInNameで永続化されるように構成 され、SM-AAD を参照する技術プロファイルにはsignInName用のOutputClaimが含まれているため、signInNameはセッション cookie に書き込まれます。 この動作は、このパターンを満たすすべての要求に適用されます。
  • Subsequent のログイン
    • 技術プロファイルがスキップされ、ユーザーにはサインインページが表示されません。
    • 要求バッグには、新しいサインイン時に保持されたセッション Cookie のsignInName値と、セッション Cookie に永続化されるパターンを満たすその他の要求が含まれます。
    • セッション プロバイダーのOutput要求は、後続のログオン (シングル サインオン) 中に処理されるため、セッション管理の技術プロファイルはobjectIdFromSession要求を返します。 この場合、objectIdFromSession要求バッグに存在する要求は、シングル サインオンによってユーザーの要求がセッション cookie から送信されていることを示します。

ExternalLoginSSOSessionProvider

ExternalLoginSSOSessionProviderセッション プロバイダーは、[ID プロバイダーの選択] 画面とフェデレーション ID プロバイダーからのサインアウトを抑制するために使用されます。 これは通常、フェデレーション ID プロバイダー (Facebook や Azure Active Directory など) 用に構成された技術プロファイルで参照されます。

  • 新しいログオン
    • PersistedClaims要素は、セッション Cookie に要求を書き込みます。 永続化された要求は書き換えできません。
  • Subsequent のログイン
    • セッション cookie に書き込まれたすべての要求は、次のオーケストレーション ステップで使用できるように、要求バッグに出力されます。
    • OutputClaims要素は、静的な要求を要求バッグに出力します。 DefaultValue属性を使用して、要求の値を設定します。
    • セッション管理技術プロファイルを参照する技術プロファイルに、セッション cookie に永続化されているOutputClaimが含まれている場合、この技術プロファイルはスキップされます。

次の SM-SocialLogin 技術プロファイルは、ExternalLoginSSOSessionProvider セッションプロバイダーの種類です。 SM-SocialLogin技術プロファイルは、カスタム ポリシー スターター パックにあります。

<TechnicalProfile Id="SM-SocialLogin">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.ExternalLoginSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="AlternativeSecurityId" />
  </PersistedClaims>
</TechnicalProfile>

AlternativeSecurityId要求は、ユーザーが外部 ID プロバイダーを使用してサインインしたときに生成されます。 外部 ID プロバイダ ユーザの一意な識別子を表します。 AlternativeSecurityId要求は、ユーザー体験のシングル サインオンで、フェデレーション ID プロバイダーとの対話なしでディレクトリからユーザーのプロファイルを読み取ることができるように永続化されます。

外部セッション・プロバイダーを構成するには、OAuth1OAuth2、または OpenID Connect 技術プロファイルからSM-SocialLoginへの参照を追加します。 たとえば、Facebook-OAUTHは、SM-SocialLoginセッション管理技術プロファイルを 使用します。 詳細については、「 カスタム ポリシー スターター パック」を参照してください。

<TechnicalProfile Id="Facebook-OAUTH">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
</TechnicalProfile>

OAuthSSOSessionProvider

この OAuthSSOSessionProvider プロバイダーは、OAuth2 または OpenId Connect 証明書利用者と Azure AD B2C 間の Azure AD B2C セッションを管理するために使用されます。 Azure AD B2Cは、シングル サインアウト(別名シングル ログアウト (SLO)) をサポートします。 ユーザーがAzure AD B2C サインアウト エンドポイントを経由してサインアウトすると、Azure AD B2C によってユーザーのセッション cookie がブラウザーからクリアされます。 ただし、ユーザーは認証に Azure AD B2C を使用する他のアプリケーションにサインインしたままになることがあります。

この種類のセッションプ ロバイダーにより、Azure AD B2C は、ユーザーがログインしたすべての OAuth2 または OpenId Connect アプリケーションを追跡できます。 1 つのアプリケーションのサインアウト中、Azure AD B2C は、他のすべての既知のログイン アプリケーションのエンドポイント logout の呼び出しを試みます。 この機能は、セッション プロバイダーに組み込まれています。 構成できる永続化または出力要求がありません。 次の SM-jwt-issuer 技術プロファイルは、OAuthSSOSessionProvider セッションプロバイダーの種類です。

<TechnicalProfile Id="SM-jwt-issuer">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.OAuthSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</TechnicalProfile>

SM-jwt-issuer 技術プロファイルは、技術プロファイルから JwtIssuer 参照されます。

<TechnicalProfile Id="JwtIssuer">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-jwt-issuer" />
</TechnicalProfile>

SamlSSOSessionProvider

SamlSSOSessionProviderセッション プロバイダーは、フェデレーション SAML ID プロバイダーまたは SAML 証明書利用者アプリケーションと Azure AD B2C を使用してセッションの動作を管理するために使用されます。

SAML ID プロバイダーのセッション管理

SAML ID プロバイダー セッションからSamlSSOSessionProviderセッション プロバイダーを参照する場合は、RegisterServiceProvidersfalseに設定する必要があります。

次のSM-Saml-idp技術プロファイルは、セッションプロバイダーのSamlSSOSessionProvider種類です。

<TechnicalProfile Id="SM-Saml-idp">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="RegisterServiceProviders">false</Item>
  </Metadata>
</TechnicalProfile>

SM-Saml-idpセッション管理技術プロファイルを使用するには、SAML ID プロバイダー技術プロファイルへの参照を追加します。 たとえば、AD FS SAML ID プロバイダーContoso-SAML2は、SM-Saml-idpセッション管理技術プロファイルを使用します。

<TechnicalProfile Id="Contoso-SAML2">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp" />
</TechnicalProfile>

SAML サービス プロバイダーのセッション管理

SAML 証明書利用者セッションを管理するためにSamlSSOSessionProviderセッション プロバイダーを参照する場合は、RegisterServiceProviderstrueに設定する必要があります。 SAML セッションのサインアウトを完了するには、SessionIndexNameID が必要です。

次のSM-Saml-issuer技術プロファイルは、セッションプロバイダーのSamlSSOSessionProvider種類です。

<TechnicalProfile Id="SM-Saml-issuer">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</TechnicalProfile>

SM-Saml-issuerセッション管理技術プロファイルを使用するには、SAML トークン発行者技術プロファイルへの参照を追加します。 たとえば、Saml2AssertionIssuer技術プロファイルでは、SM-Saml-issuerセッション管理技術プロファイルが使用されます。

<TechnicalProfile Id="Saml2AssertionIssuer">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-issuer" />
</TechnicalProfile>

Metadata

属性 必須 説明
IncludeSessionIndex いいえ 現在使用されていません。無視してもかまいません。
RegisterServiceProviders いいえ アサーションが発行された SAML サービス プロバイダーすべてをプロバイダーが登録する必要があることを示します。 指定できる値は true(既定値) またはfalseです。

NoopSSOSessionProvider

シングル サインオンの動作を抑制するには、 NoopSSOSessionProvider セッション プロバイダーを使用します。 この種類のセッション プロバイダーを使用する技術プロファイルは、ユーザーがアクティブなセッションを持っている場合でも、常に処理されます。 この種類のセッションプロバイダーは、次のように、特定の技術プロファイルを強制的に実行するのに役立ちます。

  • 要求の変換 -後で処理またはスキップするオーケストレーション ステップを決定するために使用される要求を作成または変換します。
  • Restful -ポリシーを実行するたびに、Restful サービスから更新されたデータを取り込みます。 拡張ログと監査に対して Restful を呼び出すこともできます。
  • セルフアサート -ポリシーを実行するたびに、ユーザーにデータを提供することを強制します。 たとえば、ワンタイム パスコードを使用して電子メールを確認するか、ユーザーの同意を求めることができます。
  • Phonefactor - 後続のログオン (シングル サインオン) 中でも、ユーザーが 「ステップアップ認証」の一部として多要素認証を実行するように強制します。

この種類のセッションプロバイダーは、ユーザーのセッション cookie に要求を保持しません。 次のSM-Noop技術プロファイルは、NoopSSOSessionProviderセッション プロバイダーの種類です。 SM-Noop技術プロファイルは、カスタム ポリシー スターター パックにあります。

<TechnicalProfile Id="SM-Noop">
  <DisplayName>Noop Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.NoopSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</TechnicalProfile>

技術プロファイルのシングル サインオン動作を抑制するには、SM-Noopへの参照を技術プロファイルに追加します。 たとえば、AAD-Commonは、SM-Noopセッション管理技術プロファイルを 使用します。 詳細については、「 カスタム ポリシー スターター パック」を参照してください。

<TechnicalProfile Id="AAD-Common">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

次のステップ

セッション動作を構成する方法について確認します。