設定 Azure Active Directory B2C 中的權杖

開始之前,使用 [選擇原則類型] 選取器來選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先定義的使用者流程,或透過完全可設定的自訂原則。 此文章中所需的步驟隨各方法而異。

在本文中,您將瞭解如何在 Azure Active Directory B2C (Azure AD B2C) 中設定權杖的存留期和相容性

Prerequisites

權杖存留期行為

您可以設定權杖存留期,包括:

  • 存取和識別碼權杖存留期 (分鐘) - OAuth 2.0 持有人權杖和識別碼權杖的存留期。 預設值是 60 分鐘 (1 小時)。 最小值為 5 分鐘 (包含此值)。 最大值為 1,440 分鐘 (24 小時,包含此值)。
  • 重新整理權杖存留期 (天) - 重新整理權杖可用來取得新存取權杖的最大期間 (如果您的應用程式已獲授與 offline_access 範圍)。 預設值為 14 天。 最小值為一天 (包含此值)。 最大值為 90 天 (包含此值)。
  • 重新整理權杖滑動時間範圍存留期 - 重新整理權杖滑動時間範圍類型。 Bounded 指出重新整理權杖可以擴充為 [存留期長度 (天)] 中的指定。 No expiry 指出重新整理權杖滑動時間範圍存留期永不過期。
  • 存留期長度 (天) - 這段期間結束後,無論應用程式取得的最新重新整理權杖有效期間為何,都會強制使用者重新驗證。 值必須大於或等於 [重新整理權杖存留期] 值。

下圖顯示重新整理權杖滑動時間範圍存留期行為。

重新整理權杖存留期

注意

搭配使用授權碼流程與 PKCE 的單頁應用程式一律會有 24 小時的重新整理權杖存留期,而行動應用程式、桌面應用程式和 Web 應用程式則沒有這項限制。 深入了解瀏覽器中重新整理權杖的安全性隱含

設定權杖存留期

設定使用者流程權杖存留期:

  1. 登入 Azure 入口網站
  2. 確定您使用的目錄包含您的 Azure AD B2C 租用戶。 選取入口網站工具列中的目錄 + 訂閱圖示。
  3. 在 [入口網站設定] | [目錄 + 訂用帳戶] 頁面上,在 [目錄名稱] 清單中尋找您的 Azure AD B2C 目錄,然後選取 [切換]。
  4. 選擇 Azure 入口網站左上角的 [所有服務],然後搜尋並選取 [Azure AD B2C]。
  5. 選取 [使用者流程 (原則)]。
  6. 開啟您先前建立的使用者流程。
  7. 選取 [屬性] 。
  8. 在 [權杖存留期] 底下,調整屬性以符合應用程式的需求。
  9. 選取 [儲存]。

在 Azure 入口網站 中設定使用者流程權杖。

若要變更權杖相容性的設定,請在擴充功能或您想要影響的原則信賴憑證者檔案中,設定權杖簽發者技術設定檔中繼資料。 權杖簽發者技術設定檔如下列範例所示:

<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 - 識別碼權杖存留期 (秒)。 預設值為 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) 宣告 - 存取和識別碼權杖簽發者格式。
  • Subject (sub) claim - 權杖判斷提示其相關資訊的主體,例如應用程式的使用者。 這個值不可變,而且無法重新指派或重複使用。 它可用來安全地執行授權檢查,例如當權杖用於存取資源時。 根據預設,主體宣告會填入目錄中使用者的物件識別碼。
  • 代表使用者流程的宣告 - 此宣告可識別已執行的使用者流程。 可能的值: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

  • 設定代表原則識別碼的宣告 - 用來設定此值的選項為 TFP (信任架構原則) 和 ACR (驗證內容參考)。 TFP 是建議值。 使用 None 值來設定 AuthenticationContextReferenceClaimPattern

    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 項目。

  • 主體 (sub) 宣告 - 此選項的預設值為 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 - 預設值。 您也可以將預設值設定為宣告解析程式,例如租用戶識別碼。
  • AlwaysUseDefaultValue - 強制使用預設值。

授權碼存留期

使用 OAuth 2.0 授權碼流程時,應用程式可以使用授權碼來要求目標資源的存取權杖。 授權碼的有效期很短,大約會在 10 分鐘後到期。 無法設定授權碼存留期。 請確定您的應用程式在 10 分鐘內兌換授權碼。

後續步驟