重要
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。
開始する前にこのページの上部にある ポリシーの種類 セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。
この記事では、Azure Active Directory B2C (Azure AD B2C) で トークンの有効期間と互換性 を構成する方法について説明します。
[前提条件]
- ユーザーが サインアップしてアプリケーションにサインインできるように、ユーザー フローを作成します。
- Web アプリケーションを登録します。
- 「Active Directory B2C でのカスタム ポリシーの概要」の手順を完了してください。 このチュートリアルでは、Azure AD B2C テナント構成を使用するようにカスタム ポリシー ファイルを更新する方法について説明します。
- Web アプリケーションを登録します。
トークンの有効期間の動作
トークンの有効期間は、次のように構成できます。
- アクセス トークンと ID トークンの有効期間 (分) - OAuth 2.0 ベアラー トークンと ID トークンの有効期間。 既定値は 60 分 (1 時間) です。 最短は 5 分です (5 分を含む)。 最大値は 1,440 分 (24 時間) です。
-
更新トークンの有効期間 (日数) - アプリケーションに
offline_access
スコープが付与されている場合、更新トークンを使用して新しいアクセス トークンを取得できるまでの最大期間。 既定値は 14 日です。 最小値 (範囲に含む) は 1 日です。 最大 (含む) 90 日。 -
更新トークン スライディング ウィンドウの有効期間 - 更新トークンのスライディング ウィンドウの種類。
Bounded
は、更新トークンを 有効期間 (日数) で指定されたとおりに拡張できることを示します。No expiry
は、更新トークンのスライディング ウィンドウの有効期間が無期限であることを示します。 - 有効期間 (日数) - この期間が経過すると、アプリケーションによって取得された最新の更新トークンの有効期間に関係なく、ユーザーは強制的に再認証されます。 値は、 更新トークンの有効期間 の値以上である必要があります。
次の図は、更新トークンのスライディング ウィンドウの有効期間の動作を示しています。
注
PKCE で認証コード フローを使用するシングルページ アプリケーションの更新トークンの有効期間は常に 24 時間ですが、モバイル アプリ、デスクトップ アプリ、Web アプリではこの制限は発生しません。 ブラウザーでの更新トークンのセキュリティへの影響の詳細について説明します。
トークンの有効期間を構成する
ユーザー フロー トークンの有効期間を構成するには:
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
- [ユーザー フロー (ポリシー)]を選択します。
- 前に作成したユーザー フローを開きます。
- [プロパティ] を選択します。
- [ トークンの有効期間] で、アプリケーションのニーズに合わせてプロパティを調整します。
- 保存 を選択します。
トークンの互換性の設定を変更するには、拡張機能で トークン発行者 の技術プロファイル メタデータ、または影響を与えるポリシーの証明書利用者ファイルを設定します。 トークン発行者の技術プロファイルは、次の例のようになります。
<ClaimsProviders>
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="JwtIssuer">
<Metadata>
<Item Key="token_lifetime_secs">3600</Item>
<Item Key="id_token_lifetime_secs">3600</Item>
<Item Key="refresh_token_lifetime_secs">1209600</Item>
<Item Key="rolling_refresh_token_lifetime_secs">7776000</Item>
<!--<Item Key="allow_infinite_rolling_refresh_token">true</Item>-->
<Item Key="IssuanceClaimPattern">AuthorityAndTenantGuid</Item>
<Item Key="AuthenticationContextReferenceClaimPattern">None</Item>
</Metadata>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
</ClaimsProviders>
前の例では、次の値が設定されています。
- token_lifetime_secs - アクセス トークンの有効期間 (秒)。 既定値は 3,600 (1 時間) です。 最小値は 300 (5 分) です。 最大値は 86,400 (24 時間) です。
- id_token_lifetime_secs - ID トークンの有効期間 (秒)。 既定値は 3,600 (1 時間) です。 最小値は 300 (5 分) です。 最大値は 86,400 (24 時間) です。
- refresh_token_lifetime_secs 更新トークンの有効期間 (秒)。 既定値は 1,209,600 (14 日) です。 最小値は 86,400 (24 時間) です。 最大値は 7,776,000 (90 日) です。
-
rolling_refresh_token_lifetime_secs - 更新トークンスライディング ウィンドウの有効期間 (秒)。 既定値は 7,776,000 (90 日) です。 最小値は 86,400 (24 時間) です。 最大値は 31,536,000 (365 日) です。 スライディング ウィンドウの有効期間を適用しない場合は、
allow_infinite_rolling_refresh_token
の値をtrue
に設定します。 - allow_infinite_rolling_refresh_token - 更新トークン のスライディング ウィンドウの有効期間は期限切れになりません。
トークン互換性の設定
トークンの互換性は、次のように構成できます。
- [発行者 (iss) 要求] - アクセスと ID トークン発行者の形式。
- サブジェクト (sub) クレーム - トークンが情報を主張する主体、例えばアプリケーションのユーザー。 この値は変更不可で、再割り当ても再利用もできません。 トークンを使用してリソースにアクセスする場合など、承認チェックを安全に実行するために使用できます。 既定では、サブジェクト要求には、ディレクトリ内のユーザーのオブジェクト ID が設定されます。
-
ユーザー フローを表す要求 - この要求は、実行されたユーザー フローを識別します。 指定できる値は
tfp
(既定値) またはacr
です。
ユーザー フローの互換性設定を構成するには:
- [ユーザー フロー (ポリシー)]を選択します。
- 前に作成したユーザー フローを開きます。
- [プロパティ] を選択します。
- [ トークンの互換性設定] で、アプリケーションのニーズに合わせてプロパティを調整します。
- 保存 を選択します。
トークンの互換性の設定を変更するには、拡張機能で トークン発行者 の技術プロファイル メタデータ、または更新するポリシーの証明書利用者ファイルを設定します。 トークン発行者の技術プロファイルは、次の例のようになります。
<ClaimsProviders>
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="JwtIssuer">
<Metadata>
...
<Item Key="IssuanceClaimPattern">AuthorityAndTenantGuid</Item>
<Item Key="AuthenticationContextReferenceClaimPattern">None</Item>
</Metadata>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
</ClaimsProviders>
発行者 (iss) 要求 - 発行者 (iss) 要求は 、IssuanceClaimPattern メタデータ項目で設定されます。 適用可能な値は、
AuthorityAndTenantGuid
とAuthorityWithTfp
です。ポリシー ID を表す要求の設定 - この値を設定するためのオプションは、
TFP
(信頼フレームワーク ポリシー) とACR
(認証コンテキスト参照) です。TFP
は推奨値です。 AuthenticationContextReferenceClaimPattern をNone
の値で設定します。ClaimsSchema 要素に次の要素を追加します。
<ClaimType Id="trustFrameworkPolicy"> <DisplayName>Trust framework policy name</DisplayName> <DataType>string</DataType> </ClaimType>
証明書利用者ポリシーの OutputClaims 要素で、次の出力要求を追加します。
<OutputClaim ClaimTypeReferenceId="trustFrameworkPolicy" Required="true" DefaultValue="{policy}" PartnerClaimType="tfp" />
ACR の場合は、 AuthenticationContextReferenceClaimPattern 項目を 削除します。
サブジェクト (サブ) 要求 - このオプションの既定値は ObjectID です。この設定を
Not Supported
に切り替える場合は、次の行を置き換えます。<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />
置き換えた後の行:
<OutputClaim ClaimTypeReferenceId="sub" />
省略可能な要求をアプリに提供する
アプリケーション要求は、アプリケーションに返される値です。 必要な要求が含まれるようユーザー フローを更新します。
- [ユーザー フロー (ポリシー)]を選択します。
- 前に作成したユーザー フローを開きます。
- [ アプリケーション要求] を選択します。
- アプリケーションに返送する要求と属性を選択します。
- 保存 を選択します。
証明書利用者ポリシーの技術プロファイル出力要求は、アプリケーションに返される値です。 出力要求を追加すると、ユーザー体験が成功した後に要求がトークンに発行され、アプリケーションに送信されます。 証明書利用者セクション内の技術プロファイル要素を変更して、目的の要求を出力要求として追加します。
- カスタム ポリシー ファイルを開きます。 たとえば、SignUpOrSignin.xmlします。
- OutputClaims 要素を見つけます。 トークンに含める OutputClaim を追加します。
- 出力要求属性を設定します。
次の例では、 accountBalance
要求を追加します。 accountBalance 要求は、残高としてアプリケーションに送信されます。
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
<OutputClaim ClaimTypeReferenceId="identityProvider" />
<OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
<!--Add the optional claims here-->
<OutputClaim ClaimTypeReferenceId="accountBalance" DefaultValue="" PartnerClaimType="balance" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
OutputClaim 要素には、次の属性が含まれています。
- ClaimTypeReferenceId - ポリシー ファイルまたは親ポリシー ファイルの ClaimsSchema セクションで既に定義されている要求の種類の識別子。
- PartnerClaimType - トークン内の要求の名前を変更できます。
- DefaultValue - 既定値。 テナント ID などの 要求リゾルバーに既定値を設定することもできます。
- AlwaysUseDefaultValue - 既定値を強制的に使用します。
承認コードの有効期間
OAuth 2.0 承認コード フローを使用する場合、アプリは承認コードを使用してターゲット リソースのアクセス トークンを要求できます。 承認コードは有効期間が短く、約 10 分後に有効期限が切れます。 承認コードの有効期間を構成できません。 アプリケーションが 10 分以内に承認コードを引き換えるようにします。
関連コンテンツ
- アクセス トークンを要求する方法の詳細について説明します。
- 開発者のベスト プラクティスを使用して回復性を構築する方法について説明します。