次の方法で共有


Azure Active Directory B2C でトークンを構成する

重要

2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください

開始する前にこのページの上部にある ポリシーの種類 セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。

この記事では、Azure Active Directory B2C (Azure AD B2C) で トークンの有効期間と互換性 を構成する方法について説明します。

[前提条件]

トークンの有効期間の動作

トークンの有効期間は、次のように構成できます。

  • アクセス トークンと ID トークンの有効期間 (分) - OAuth 2.0 ベアラー トークンと ID トークンの有効期間。 既定値は 60 分 (1 時間) です。 最短は 5 分です (5 分を含む)。 最大値は 1,440 分 (24 時間) です。
  • 更新トークンの有効期間 (日数) - アプリケーションに offline_access スコープが付与されている場合、更新トークンを使用して新しいアクセス トークンを取得できるまでの最大期間。 既定値は 14 日です。 最小値 (範囲に含む) は 1 日です。 最大 (含む) 90 日。
  • 更新トークン スライディング ウィンドウの有効期間 - 更新トークンのスライディング ウィンドウの種類。 Bounded は、更新トークンを 有効期間 (日数) で指定されたとおりに拡張できることを示します。 No expiry は、更新トークンのスライディング ウィンドウの有効期間が無期限であることを示します。
  • 有効期間 (日数) - この期間が経過すると、アプリケーションによって取得された最新の更新トークンの有効期間に関係なく、ユーザーは強制的に再認証されます。 値は、 更新トークンの有効期間 の値以上である必要があります。

次の図は、更新トークンのスライディング ウィンドウの有効期間の動作を示しています。

更新トークンの有効期間

PKCE で認証コード フローを使用するシングルページ アプリケーションの更新トークンの有効期間は常に 24 時間ですが、モバイル アプリ、デスクトップ アプリ、Web アプリではこの制限は発生しません。 ブラウザーでの更新トークンのセキュリティへの影響の詳細について説明します

トークンの有効期間を構成する

ユーザー フロー トークンの有効期間を構成するには:

  1. Azure portal にサインインします。
  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
  3. Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
  4. [ユーザー フロー (ポリシー)]を選択します
  5. 前に作成したユーザー フローを開きます。
  6. [プロパティ] を選択します。
  7. [ トークンの有効期間] で、アプリケーションのニーズに合わせてプロパティを調整します。
  8. 保存 を選択します。

Azure portal でユーザー フロー トークンを構成します。

トークンの互換性の設定を変更するには、拡張機能で トークン発行者 の技術プロファイル メタデータ、または影響を与えるポリシーの証明書利用者ファイルを設定します。 トークン発行者の技術プロファイルは、次の例のようになります。

<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です。

ユーザー フローの互換性設定を構成するには:

  1. [ユーザー フロー (ポリシー)]を選択します
  2. 前に作成したユーザー フローを開きます。
  3. [プロパティ] を選択します。
  4. [ トークンの互換性設定] で、アプリケーションのニーズに合わせてプロパティを調整します。
  5. 保存 を選択します。

トークンの互換性の設定を変更するには、拡張機能で トークン発行者 の技術プロファイル メタデータ、または更新するポリシーの証明書利用者ファイルを設定します。 トークン発行者の技術プロファイルは、次の例のようになります。

<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 メタデータ項目で設定されます。 適用可能な値は、 AuthorityAndTenantGuidAuthorityWithTfpです。

  • ポリシー ID を表す要求の設定 - この値を設定するためのオプションは、 TFP (信頼フレームワーク ポリシー) と ACR (認証コンテキスト参照) です。 TFP は推奨値です。 AuthenticationContextReferenceClaimPatternNone の値で設定します。

    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" />
    

省略可能な要求をアプリに提供する

アプリケーション要求は、アプリケーションに返される値です。 必要な要求が含まれるようユーザー フローを更新します。

  1. [ユーザー フロー (ポリシー)]を選択します
  2. 前に作成したユーザー フローを開きます。
  3. [ アプリケーション要求] を選択します
  4. アプリケーションに返送する要求と属性を選択します。
  5. 保存 を選択します。

証明書利用者ポリシーの技術プロファイル出力要求は、アプリケーションに返される値です。 出力要求を追加すると、ユーザー体験が成功した後に要求がトークンに発行され、アプリケーションに送信されます。 証明書利用者セクション内の技術プロファイル要素を変更して、目的の要求を出力要求として追加します。

  1. カスタム ポリシー ファイルを開きます。 たとえば、SignUpOrSignin.xmlします。
  2. OutputClaims 要素を見つけます。 トークンに含める OutputClaim を追加します。
  3. 出力要求属性を設定します。

次の例では、 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 分以内に承認コードを引き換えるようにします。