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 | セルフアサート、Microsoft Entra ID、Microsoft Entra 多要素認証、要求変換 | 技術プロファイルの実行をスキップします。 | はい | はい |
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 で使用されるセッションの種類を示しています。
セッション プロバイダーの参照
テクニカル プロファイルでセッション プロバイダを使用するには、次の手順を実行します。
適切なセッション管理技術プロファイルを作成します。 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>
技術プロファイル内のセッション管理技術プロファイルを参照します。 これにより、後続のログオン (SSO) 時に、その技術プロファイルの動作を制御できます。
技術プロファイルからセッション管理技術プロファイルを参照するには、
UseTechnicalProfileForSessionManagement
要素を追加します。 次の例は、SM-AAD
セッション管理技術プロファイルの使用を示しています。ReferenceId
をセッション管理技術プロファイルの ID に変更します。<TechnicalProfile Id="{Technical-profile-ID}"> ... <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" /> </TechnicalProfile>
重要
技術プロファイルがセッション管理プロバイダーを参照しない場合は、DefaultSSOSessionProvider セッション プロバイダーが適用され、予期しない動作が発生する可能性があります。
Note
更新トークン フロー中、セッション管理プロバイダーは呼び出されません。 新しいアクセス トークンを発行しようとする試みはすべて、発行された元の要求のコピーです。
セッション要求の管理
セッション管理技術プロファイルは、カスタム ポリシーの実行中に読み取り、書き込み、または出力できる要求を制御します。
セッション管理技術プロファイルの中で、PersistedClaims
とOutputClaims
の要素を使用して要求を管理します。
- 永続化された要求 - セッション 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 に書き込まれます。 この動作は、このパターンを満たすすべての要求に適用されます。
- セッション管理技術プロファイル (SM-AAD) は、
- Subsequent のログイン
- 技術プロファイルがスキップされ、ユーザーにはサインインページが表示されません。
- 要求バッグには、新しいサインイン時に保持されたセッション Cookie の
signInName
値と、セッション Cookie に永続化されるパターンを満たすその他の要求が含まれます。 - セッション プロバイダーの
Output
要求は、後続のログオン (シングル サインオン) 中に処理されるため、セッション管理の技術プロファイルはobjectIdFromSession
要求を返します。 この場合、objectIdFromSession
要求バッグに存在する要求は、シングル サインオンによってユーザーの要求がセッション cookie から送信されていることを示します。
ExternalLoginSSOSessionProvider
ExternalLoginSSOSessionProvider
セッション プロバイダーは、[ID プロバイダーの選択] 画面とフェデレーション ID プロバイダーからのサインアウトを抑制するために使用されます。 これは通常、フェデレーション ID プロバイダー (Facebook や Microsoft Entra ID など) 用に構成された技術プロファイルで参照されます。
- 新しいログオン
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 プロバイダーとの対話なしでディレクトリからユーザーのプロファイルを読み取ることができるように永続化されます。
外部セッション・プロバイダーを構成するには、OAuth1、OAuth2、または 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
セッション プロバイダーを参照する場合は、RegisterServiceProviders
をfalse
に設定する必要があります。
次の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
セッション プロバイダーを参照する場合は、RegisterServiceProviders
をtrue
に設定する必要があります。 SAML セッションのサインアウトを完了するには、SessionIndex
と NameID
が必要です。
次の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>
次のステップ
セッション動作を構成する方法について確認します。