共用方式為


使用另一個 Azure AD B2C 租使用者的 Azure AD B2C 帳戶設定註冊和登入

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

注意

在 Azure Active Directory B2C 中, 自定義原則 的設計主要是為了解決複雜的案例。 在大部分情況下,我們建議您使用內 建的使用者流程。 如果您尚未這麼做,請了解開始使用 Active Directory B2C 中的自定義原則入門套件。

概觀

本文說明如何設定與另一個 Azure AD B2C 租使用者的同盟。 當您的應用程式受到 Azure AD B2C 的保護時,這可讓使用者從其他 Azure AD B2C 使用其現有帳戶登入。 在下圖中,用戶能夠使用 Fabrikam 的 Azure AD B2C 租使用者所管理的帳戶登入由 Contoso 的 Azure AD B2C 保護的應用程式。 在此情況下,用戶帳戶必須存在於 Fabrikam 的租使用者中,才能嘗試登入 Contoso 的 Azure AD B2C 所保護的應用程式。

Azure AD B2C federation with another Azure AD B2C tenant

必要條件

確認應用程式的發行者網域

自 2020 年 11 月起,除非驗證應用程式的發行者網域,且公司身分識別已向 Microsoft 合作夥伴網路驗證,並與應用程式相關聯,否則新的應用程式註冊會在使用者同意提示中顯示為未驗證。 (深入瞭解這項變更。請注意,針對 Azure AD B2C 使用者流程,發行者的網域只會在使用 Microsoft 帳戶或其他 Microsoft Entra 租用戶作為識別提供者時出現。 若要符合這些新的需求,請執行下列動作:

  1. 使用您的 Microsoft 合作夥伴網路 (MPN) 帳戶確認您的公司身分識別。 此程式會驗證貴公司和公司主要聯繫人的相關信息。
  2. 完成發行者驗證程式,以使用下列其中一個選項,將 MPN 帳戶與您的應用程式註冊產生關聯:

建立 Azure AD B2C 應用程式

若要為具有來自另一個 Azure AD B2C 租使用者(例如 Fabrikam)的帳戶的使用者啟用登入,請在您的 Azure AD B2C 中啟用登入(例如 Contoso):

  1. 建立 使用者流程自定義原則
  2. 然後在 Azure AD B2C 中建立應用程式,如本節所述。

若要建立應用程式。

  1. 登入 Azure 入口網站

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

  3. 在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]

  4. 選取 [應用程式註冊],然後選取 [新增註冊]

  5. 輸入 應用程式的 [名稱 ]。 例如, ContosoApp

  6. 在 [支援的帳戶類型] 下,選取 [任何身分識別提供者或組織目錄中的帳戶 (用於運用使用者流程來驗證使用者)]

  7. 在 [重新導向 URI] 底下,選取 [Web],然後在所有小寫字母中輸入下列 URL,其中 your-B2C-tenant-name 會取代為您的 Azure AD B2C 租用戶名稱(例如 Contoso)。

    https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/oauth2/authresp
    

    例如: https://contoso.b2clogin.com/contoso.onmicrosoft.com/oauth2/authresp

    如果您使用 自訂網域,請輸入 https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp。 取代為您的自訂網域,並以your-tenant-name您的租使用者名稱取代 your-domain-name

  8. 在 [許可權] 底下,選取 [ 授與系統管理員同意以開啟標識符和offline_access許可權 ] 複選框。

  9. 選取註冊

  10. 在 [Azure AD B2C - 應用程式註冊] 頁面中,選取您建立的應用程式,例如 ContosoApp

  11. 記錄應用程式 [概觀] 頁面上顯示的應用程式 (用戶端) 識別碼。 在下一節中設定識別提供者時,您需要此專案。

  12. 在左側功能表中,於 [管理] 下,選取 [憑證和祕密]

  13. 選取 [新用戶端密碼]

  14. 在 [描述] 方塊中輸入客戶端密碼的描述。 例如, clientsecret1

  15. 在 [到期] 下,選取祕密的有效持續時間,然後選取 [新增]

  16. 記錄祕密的 [值]。 在下一節中設定識別提供者時,您需要此專案。

將 Azure AD B2C 設定為識別提供者

  1. 登入 Azure 入口網站

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

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

  4. 選取 [識別提供者],然後選取 [新增 OpenID 連線 提供者]。

  5. 輸入名稱。 例如,輸入 Fabrikam

  6. 針對 [元數據 URL],輸入下列 URL{tenant} 以 Azure AD B2C 租使用者的功能變數名稱取代 (例如 Fabrikam)。 {policy}將 取代為您在其他租用戶中設定的原則名稱:

    https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/v2.0/.well-known/openid-configuration
    

    例如: https://fabrikam.b2clogin.com/fabrikam.onmicrosoft.com/B2C_1_susi/v2.0/.well-known/openid-configuration

  7. 針對 [ 用戶端識別碼],輸入您先前記錄的應用程式識別碼。

  8. 針對 [ 客戶端密碼],輸入您先前記錄的客戶端密碼。

  9. 針對 [ 範圍],輸入 openid

  10. 保留 [回應類型] 和 [回應模式] 的預設值。

  11. (選擇性)針對 [網域提示],輸入您要用於直接登入域名。 例如, fabrikam.com

  12. 在 [識別提供者宣告對應] 底下,選取下列宣告:

    • 用戶標識碼
    • 顯示名稱:名稱
    • 指定名稱given_name
    • 姓氏family_name
    • 電子郵件電子郵件
  13. 選取 [儲存]。

將 Azure AD B2C 識別提供者新增至使用者流程

  1. 在您的 Azure AD B2C 租使用者中,選取 [ 使用者流程]。
  2. 按兩下您要新增 Azure AD B2C 識別提供者的使用者流程。
  3. 在 [ 社交識別提供者] 底下,選取 [Fabrikam]。
  4. 選取 [儲存]。
  5. 若要測試您的原則,請選取 [ 執行使用者流程]。
  6. 針對 [ 應用程式],選取您先前註冊的名為 testapp1 的Web應用程式。 回覆 URL 應該會顯示 https://jwt.ms
  7. 選取 [ 執行使用者流程 ] 按鈕。
  8. 從 [註冊或登入] 頁面中,選取 [Fabrikam ] 以與其他 Azure AD B2C 租使用者登入。

如果登入程式成功,您的瀏覽器會重新導向至 https://jwt.ms,以顯示 Azure AD B2C 所傳回令牌的內容。

建立原則金鑰

您必須儲存您稍早在 Azure AD B2C 租使用者中建立的應用程式密鑰。

  1. 如果您有多個租使用者的存取權,請選取頂端功能表中的 設定 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
  2. 選擇 Azure 入口網站 左上角的 [所有服務],然後搜尋並選取 [Azure AD B2C]。
  3. 在 [原則] 底下,選取 [身分識別體驗架構]。
  4. 選取 [ 原則密鑰 ],然後選取 [ 新增]。
  5. 針對 [ 選項],選擇 Manual
  6. 輸入 原則金鑰的 [名稱 ]。 例如: FabrikamAppSecret 。 前置詞 B2C_1A_ 會在建立金鑰時自動新增至您的金鑰名稱,因此其在下一節中的 XML 參考是 B2C_1A_FabrikamAppSecret
  7. 在 [秘密] 中,輸入您稍早記錄的客戶端密碼。
  8. 針對 [ 金鑰使用方式],選取 Signature
  9. 選取建立

將 Azure AD B2C 設定為識別提供者

若要讓使用者使用來自另一個 Azure AD B2C 租使用者 (Fabrikam) 的帳戶進行登入,您必須將另一個 Azure AD B2C 定義為 Azure AD B2C 可以透過端點通訊的宣告提供者。 端點提供一組宣告,供 Azure AD B2C 用來驗證特定使用者已驗證。

您可以將 Azure AD B2C 新增至 原則擴充檔案中的 ClaimsProvider 元素,將 Azure AD B2C 定義為宣告提供者。

  1. 開啟 TrustFrameworkExtensions.xml 檔案。

  2. 尋找 ClaimsProviders 元素。 如果不存在,請在根元素底下新增它。

  3. 新增 ClaimsProvider,如下所示:

    <ClaimsProvider>
      <Domain>fabrikam.com</Domain>
      <DisplayName>Federation with Fabrikam tenant</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="AzureADB2CFabrikam-OpenIdConnect">
        <DisplayName>Fabrikam</DisplayName>
        <Protocol Name="OpenIdConnect"/>
        <Metadata>
          <!-- Update the Client ID below to the Application ID -->
          <Item Key="client_id">00000000-0000-0000-0000-000000000000</Item>
          <!-- Update the metadata URL with the other Azure AD B2C tenant name and policy name -->
          <Item Key="METADATA">https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/v2.0/.well-known/openid-configuration</Item>
          <Item Key="UsePolicyInRedirectUri">false</Item>
          <Item Key="response_types">code</Item>
          <Item Key="scope">openid</Item>
          <Item Key="response_mode">form_post</Item>
          <Item Key="HttpBinding">POST</Item>
        </Metadata>
        <CryptographicKeys>
          <Key Id="client_secret" StorageReferenceId="B2C_1A_FabrikamAppSecret"/>
        </CryptographicKeys>
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
          <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
          <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name" />
          <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
          <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
          <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss"  />
          <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
          <OutputClaim ClaimTypeReferenceId="otherMails" PartnerClaimType="emails"/>    
        </OutputClaims>
        <OutputClaimsTransformations>
          <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
          <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
          <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
        </OutputClaimsTransformations>
        <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/>
      </TechnicalProfile>
     </TechnicalProfiles>
    </ClaimsProvider>
    
  4. 使用相關值更新下列 XML 元素:

    XML 元素
    ClaimsProvider\Domain 用於 直接登入的功能變數名稱。 輸入您想要在直接登入中使用的功能變數名稱。 例如, fabrikam.com
    TechnicalProfile\DisplayName 此值會顯示在登入畫面上的 [登入] 按鈕上。 例如, Fabrikam
    Metadata\client_id 識別提供者的應用程式識別碼。 使用您稍早在其他 Azure AD B2C 租使用者中建立的應用程式識別碼來更新用戶端識別碼。
    Metadata\METADATA 指向 OpenID 連線識別提供者設定檔的 URL,也稱為 OpenID 已知組態端點。 輸入下列 URL, {tenant} 並將 取代為其他 Azure AD B2C 租使用者的功能變數名稱(Fabrikam)。 {tenant}將 取代為您在其他租使用者中設定的原則名稱,並以 {policy] 原則名稱取代 : https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/v2.0/.well-known/openid-configuration 。 例如: https://fabrikam.b2clogin.com/fabrikam.onmicrosoft.com/B2C_1_susi/v2.0/.well-known/openid-configuration
    CryptographicKeys 將 儲存體ReferenceId 的值 更新為您稍早建立的原則金鑰名稱。 例如: B2C_1A_FabrikamAppSecret

新增使用者旅程圖

此時,識別提供者已設定,但尚未在任何登入頁面中提供。 如果您沒有自己的自訂使用者旅程圖,請建立現有範本使用者旅程圖的重複專案,否則請繼續進行下一個步驟。

  1. 從入門套件開啟 TrustFrameworkBase.xml 檔案。
  2. 尋找並複製包含 Id="SignUpOrSignIn" 之 UserJourney 元素的整個內容
  3. 開啟 TrustFrameworkExtensions.xml 並尋找 UserJourneys 元素。 如果專案不存在,請新增一個。
  4. 貼上您複製為 UserJourneys 元素子系之 UserJourney 元素 整個內容。
  5. 重新命名使用者旅程圖的識別碼。 例如: Id="CustomSignUpSignIn"

將識別提供者新增至使用者旅程圖

現在您已擁有使用者旅程圖,請將新的識別提供者新增至使用者旅程圖。 您必須先新增登入按鈕,然後將按鈕連結至動作。 動作是您稍早建立的技術設定檔。

  1. 尋找在 Type="CombinedSignInAndSignUp" 使用者旅程圖中包含 或 Type="ClaimsProviderSelection" 的協調流程步驟元素。 通常是第一個協調流程步驟。 ClaimsProviderSelections 元素包含使用者可以登入的識別提供者清單。 元素的順序會控制向使用者呈現的登入按鈕順序。 新增 ClaimsProviderSelection XML 元素。 將 TargetClaimsExchangeId 的值 設定為易記名稱。

  2. 在下一個 協調流程步驟中,新增 ClaimsExchange 元素。 將識別碼 設定為目標宣告交換識別碼的值。將 TechnicalProfileReferenceId 的值 更新為您稍早建立之技術設定檔的識別碼。

下列 XML 示範使用者旅程圖的前兩個協調流程步驟與識別提供者:

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    ...
    <ClaimsProviderSelection TargetClaimsExchangeId="AzureADB2CFabrikamExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="AzureADB2CFabrikamExchange" TechnicalProfileReferenceId="AzureADB2CFabrikam-OpenIdConnect" />
  </ClaimsExchanges>
</OrchestrationStep>

設定信賴憑證者原則

信賴憑證者原則,例如 SignUpSignIn.xml ,會指定 Azure AD B2C 將執行的使用者旅程圖。 尋找信賴憑證者 內的 DefaultUserJourney 元素。 更新 ReferenceId 以符合您新增識別提供者的使用者旅程圖識別碼。

在下列範例中 CustomSignUpSignIn ,針對使用者旅程圖, ReferenceId 會設定為 CustomSignUpSignIn

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

上傳自訂原則

  1. 登入 Azure 入口網站
  2. 在入口網站工具列中選取 [ 目錄 + 訂 用帳戶] 圖示,然後選取包含 Azure AD B2C 租使用者的目錄。
  3. 在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]
  4. 在 [原則] 底下 ,選取 [ 身分識別體驗架構 ]。
  5. 選取 [ 上傳自訂原則 ],然後上傳您變更的兩個原則檔案,順序如下:擴充原則,例如 TrustFrameworkExtensions.xml ,然後是信賴憑證者原則,例如 SignUpSignIn.xml

測試您的自訂原則

  1. 選取您的信賴憑證者原則,例如 B2C_1A_signup_signin
  2. 針對 [ 應用程式 ],選取您 先前註冊的 Web 應用程式。 回復 URL 應該會顯示 https://jwt.ms
  3. 選取 [ 立即 執行] 按鈕。
  4. 從 [註冊或登入] 頁面中,選取 [Fabrikam ] 以與其他 Azure AD B2C 租使用者登入。

如果登入程式成功,您的瀏覽器會重新導向至 https://jwt.ms ,以顯示 Azure AD B2C 所傳回權杖的內容。

下一步

瞭解如何將 其他 Azure AD B2C 權杖傳遞至您的應用程式