設定 Azure Active Directory B2C 中的權杖
開始之前,使用 [選擇原則類型] 選取器來選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先定義的使用者流程,或透過完全可設定的自訂原則。 此文章中所需的步驟隨各方法而異。
在本文中,您將瞭解如何在 Azure Active Directory B2C (Azure AD B2C) 中設定權杖的存留期和相容性。
Prerequisites
- 建立使用者流程,讓使用者能夠註冊並登入您的應用程式。
- 註冊 Web 應用程式。
權杖存留期行為
您可以設定權杖存留期,包括:
- 存取和識別碼權杖存留期 (分鐘) - OAuth 2.0 持有人權杖和識別碼權杖的存留期。 預設值是 60 分鐘 (1 小時)。 最小值為 5 分鐘 (包含此值)。 最大值為 1,440 分鐘 (24 小時,包含此值)。
- 重新整理權杖存留期 (天) - 重新整理權杖可用來取得新存取權杖的最大期間 (如果您的應用程式已獲授與
offline_access
範圍)。 預設值為 14 天。 最小值為一天 (包含此值)。 最大值為 90 天 (包含此值)。 - 重新整理權杖滑動時間範圍存留期 - 重新整理權杖滑動時間範圍類型。
Bounded
指出重新整理權杖可以擴充為 [存留期長度 (天)] 中的指定。No expiry
指出重新整理權杖滑動時間範圍存留期永不過期。 - 存留期長度 (天) - 這段期間結束後,無論應用程式取得的最新重新整理權杖有效期間為何,都會強制使用者重新驗證。 值必須大於或等於 [重新整理權杖存留期] 值。
下圖顯示重新整理權杖滑動時間範圍存留期行為。
注意
搭配使用授權碼流程與 PKCE 的單頁應用程式一律會有 24 小時的重新整理權杖存留期,而行動應用程式、桌面應用程式和 Web 應用程式則沒有這項限制。 深入了解瀏覽器中重新整理權杖的安全性隱含。
設定權杖存留期
設定使用者流程權杖存留期:
- 登入 Azure 入口網站。
- 確定您使用的目錄包含您的 Azure AD B2C 租用戶。 選取入口網站工具列中的目錄 + 訂閱圖示。
- 在 [入口網站設定] | [目錄 + 訂用帳戶] 頁面上,在 [目錄名稱] 清單中尋找您的 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) claim - 權杖判斷提示其相關資訊的主體,例如應用程式的使用者。 這個值不可變,而且無法重新指派或重複使用。 它可用來安全地執行授權檢查,例如當權杖用於存取資源時。 根據預設,主體宣告會填入目錄中使用者的物件識別碼。
- 代表使用者流程的宣告 - 此宣告可識別已執行的使用者流程。 可能的值:
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 項目。
主體 (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 分鐘內兌換授權碼。
後續步驟
- 深入瞭解如何要求存取權杖。
- 瞭解如何 透過開發人員最佳做法建置復原能力。