共用方式為


在 Azure Active Directory B2C 中將識別提供者存取令牌傳遞至您的應用程式

這很重要

自 2025 年 5 月 1 日起,Azure AD B2C 將不再可供新客戶購買。 在我們的常見問題中深入瞭解

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

Azure Active Directory B2C (Azure AD B2C) 中的 使用者流程 可讓使用者利用身分識別提供者註冊或登入應用程式。 當旅程開始時,Azure AD B2C 會從識別提供者接收 存取令牌 。 Azure AD B2C 使用該令牌來擷取使用者的相關信息。 您可以在使用者流程中啟用宣告,以將令牌傳遞至您在 Azure AD B2C 中註冊的應用程式。

Azure AD B2C 支援傳遞 OAuth 2.0 識別提供者的存取令牌,其中包括 FacebookGoogle。 針對所有其他識別提供者,宣告會傳回空白。

Azure AD B2C 支援傳遞 OAuth 2.0OpenID Connect 識別提供者的存取令牌。 針對所有其他識別提供者,宣告會傳回空白。 如需詳細資訊,請參閱身分識別提供者同盟 Live 示範

下圖顯示識別提供者令牌如何傳回您的應用程式:

識別提供者通過流程

先決條件

啟用認領

  1. 以 Azure AD B2C 租用戶的外部 ID 使用者流程系統管理員登入 Azure 入口網站

  2. 如果您有多個租用戶的存取權,請使用頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租用戶。

  3. 選擇 Azure 入口網站左上角 的 [所有服務 ],搜尋並選取 [Azure AD B2C]。

  4. 選取 [使用者流程][原則],然後選取您的使用者流程。 例如, B2C_1_signupsignin1

  5. 選取 應用程式宣告

  6. 啟用 識別提供者存取令牌 宣告。

    啟用識別提供者存取令牌宣告

  7. 按兩下 [儲存 ] 以儲存使用者流程。

測試使用者流程

在 Azure AD B2C 中測試您的應用程式時,若能將 Azure AD B2C 令牌傳回到 https://jwt.ms,以檢閱其中的宣告,將會非常有用。

  1. 在使用者流程的 [概觀] 頁面上,選取 [ 執行使用者流程]。

  2. 針對 [應用程式],選取您先前註冊的應用程式。 若要檢視下列範例中的權杖, 回覆 URL 應該會顯示 https://jwt.ms

  3. 按兩下 [執行使用者流程],然後使用您的帳戶認證登入。 您應該會在 idp_access_token 宣告中看到識別提供者的存取令牌。

    您應該會看到類似下列範例的內容:

    在 jwt.ms 中解碼的令牌,idp_access_token 區塊已被反白顯示

新增權利要求項目

  1. 開啟您的TrustframeworkExtensions.xml 檔案,並將具有 標識符的下列 identityProviderAccessToken 元素新增至 ClaimsSchema 元素:

    <BuildingBlocks>
      <ClaimsSchema>
        <ClaimType Id="identityProviderAccessToken">
          <DisplayName>Identity Provider Access Token</DisplayName>
          <DataType>string</DataType>
          <AdminHelpText>Stores the access token of the identity provider.</AdminHelpText>
        </ClaimType>
        ...
      </ClaimsSchema>
    </BuildingBlocks>
    
  2. 針對您想要存取令牌的每個 OAuth 2.0 識別提供者,將 OutputClaim 元素新增至 TechnicalProfile 元素。 下列範例顯示新增至 Facebook 技術設定檔的 元素:

    <ClaimsProvider>
      <DisplayName>Facebook</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Facebook-OAUTH">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" />
          </OutputClaims>
          ...
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. 儲存 TrustframeworkExtensions.xml 檔案。

  4. 開啟依賴方原則檔案,例如 SignUpOrSignIn.xml,並將 OutputClaim 元素加入 TechnicalProfile

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="idp_access_token"/>
        </OutputClaims>
        ...
      </TechnicalProfile>
    </RelyingParty>
    
  5. 儲存原則檔案。

測試您的原則

在 Azure AD B2C 中測試您的應用程式時,讓 Azure AD B2C 令牌傳回到 https://jwt.ms,以便能夠檢閱其中的宣告,會很有用。

上傳檔案

  1. 登入 Azure 入口網站
  2. 如果您有多個租用戶的存取權,請使用頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租用戶。
  3. 選擇 Azure 入口網站左上角 的 [所有服務 ],然後搜尋並選取 [Azure AD B2C]。
  4. 選取 [ 身分識別體驗架構]。
  5. 在 [自定義原則] 頁面上,按兩下 [ 上傳原則]。
  6. 如果原則存在,請選取 [覆寫原則],然後搜尋並選取 TrustframeworkExtensions.xml 檔案。
  7. 選取 上傳
  8. 針對受信方檔案重複步驟 5 到 7,例如 SignUpOrSignIn.xml

執行政策

  1. 開啟您修改的政策。 例如, B2C_1A_signup_signin

  2. 針對 [應用程式],選取您先前註冊的應用程式。 若要檢視下列範例中的權杖, 回覆 URL 應該會顯示 https://jwt.ms

  3. 選取 [立即執行]

    您應該會看到類似下列範例的內容:

    在 jwt.ms 中解碼的令牌,idp_access_token 區塊已被反白顯示

傳遞 IDP 重新整理權杖 (可選的)

識別提供者傳回的存取令牌在短時間內有效。 某些識別提供者也會發出重新整理令牌以及存取令牌。 然後,用戶端應用程式可以在需要時,將身份提供者的刷新令牌交換為新的存取令牌。

Azure AD B2C 自定義原則支持傳遞 OAuth 2.0 識別提供者的重新整理令牌,其中包括 FacebookGoogleGitHub

若要傳遞識別提供者的重新整理令牌,請遵循下列步驟:

  1. 開啟您的TrustframeworkExtensions.xml 檔案,並將具有 標識符的下列 identityProviderRefreshToken 元素新增至 ClaimsSchema 元素。

    <ClaimType Id="identityProviderRefreshToken">
        <DisplayName>Identity provider refresh token</DisplayName>
        <DataType>string</DataType>
    </ClaimType>
    
  2. 針對您想要重新整理令牌的每個 OAuth 2.0 識別提供者,將 OutputClaim 元素新增至 TechnicalProfile 元素。 下列範例顯示新增至 Facebook 技術設定檔的 元素:

    <ClaimsProvider>
      <DisplayName>Facebook</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Facebook-OAUTH">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="{oauth2:refresh_token}" />
          </OutputClaims>
          ...
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. 某些身分識別提供者要求您在技術配置檔中包含元數據或作用範圍。

    • 針對 Google 身分識別提供者,新增access_typeprompt兩個宣告類型。 然後將下列輸入宣告新增至識別提供者的技術配置檔:

      <InputClaims>
          <InputClaim ClaimTypeReferenceId="access_type" PartnerClaimType="access_type" DefaultValue="offline" AlwaysUseDefaultValue="true" />
      
          <!-- The refresh_token is return only on the first authorization for a given user. Subsequent authorization request doesn't return the refresh_token.
              To fix this issue we add the prompt=consent query string parameter to the authorization request-->
          <InputClaim ClaimTypeReferenceId="prompt" PartnerClaimType="prompt" DefaultValue="consent" AlwaysUseDefaultValue="true" />
      </InputClaims>
      
    • 其他身份提供者可能會使用不同的方法來發出刷新令牌。 請遵循識別提供者的受眾,並將必要的元素新增至識別提供者的技術資料表。

  4. 儲存您在 TrustframeworkExtensions.xml 檔案中所做的變更。

  5. 開啟依賴方原則檔案,例如 SignUpOrSignIn.xml,並將 OutputClaim 元素加入 TechnicalProfile

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="idp_refresh_token"/>
        </OutputClaims>
        ...
      </TechnicalProfile>
    </RelyingParty>
    
  6. 儲存您在信賴方政策檔案中所做的變更。

  7. 上傳 TrustframeworkExtensions.xml 檔案,然後上傳信賴方政策檔案。

  8. 測試您的政策

後續步驟

Azure AD B2C 令牌概觀中深入瞭解。