在 Azure Active Directory B2C 中設定令牌
開始之前,請使用 [選擇原則類型 選取器] 來選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先 定義的使用者流程 ,或透過完全可設定 的自定義原則。 本文中每個方法所需的步驟都不同。
在本文中,您將瞭解如何在 Azure Active Directory B2C (Azure AD B2C) 中設定 令牌 的存留期和相容性。
必要條件
- 建立使用者流程 ,讓使用者可以註冊並登入您的應用程式。
- 註冊 Web 應用程式。
- 完成開始使用 Active Directory B2C 中的自定義原則中的 步驟
- 註冊 Web 應用程式。
令牌存留期行為
您可以設定權杖存留期,包括:
- 存取和識別碼令牌存留期 (分鐘) - OAuth 2.0 持有人令牌和標識碼令牌的存留期。 默認值為 60 分鐘(1 小時)。 最低(含)為 5 分鐘。 最大值(含)為1,440分鐘(24小時)。
- 重新整理令牌存留期 (天) - 如果您的應用程式已獲
offline_access
授與範圍,重新整理令牌可用來取得新的存取令牌之前的最大時間週期。 預設值為14天。 最低(含)是一天。 上限(含)90 天。 - 重新整理令牌滑動視窗存留期 - 重新整理令牌滑動窗口類型。
Bounded
表示重新整理權杖可以擴充為存留期長度 (days) 中指定的 。No expiry
表示重新整理令牌滑動視窗存留期永遠不會過期。 - 存留期長度 (天) - 在這段期間過後,用戶會強制重新驗證,而不論應用程式取得的最新重新整理令牌的有效期間為何。 此值必須大於或等於 Refresh 令牌存留期 值。
下圖顯示重新整理令牌滑動視窗存留期行為。
注意
搭配 PKCE 使用授權碼流程的單頁應用程式一律會有 24 小時的重新整理令牌存留期,而行動應用程式、傳統型應用程式和 Web 應用程式則不會遇到這項限制。 深入了解瀏覽器中重新整理令牌的安全性影響。
設定令牌存留期
若要設定您的使用者流程令牌存留期:
- 登入 Azure 入口網站。
- 如果您有多個租使用者的存取權,請選取頂端功能表中的 設定 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
- 選擇 Azure 入口網站 左上角的 [所有服務],然後搜尋並選取 [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 - 識別元令牌存留期(秒)。 默認值為 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) 宣告 - 令牌判斷提示信息的主體,例如應用程式的使用者。 這個值是不可變的,無法重新指派或重複使用。 它可以用來安全地執行授權檢查,例如當令牌用來存取資源時。 根據預設,主體宣告會填入目錄中用戶的物件標識符。
- 代表使用者流程 的宣告 - 此宣告會識別已執行的使用者流程。 可能的值:
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
。設定代表原則識別碼 的宣告 - 設定此值的選項為
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 專案。
Subject (sub) 宣告 - 此選項預設為 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 - 預設值。 您也可以將預設值設定為 宣告解析程式 ,例如租使用者識別碼。
- AlwaysUseDefaultValue - 強制使用預設值。
授權碼存留期
使用 OAuth 2.0 授權碼流程 時,應用程式可以使用授權碼來要求目標資源的存取權杖。 授權碼是短期的,會在大約 10 分鐘後到期。 無法設定授權碼存留期。 請確定您的應用程式在 10 分鐘內兌換授權碼。