共用方式為


使用 Azure Active Directory B2C 以Microsoft帳戶設定註冊和登入

這很重要

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

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

備註

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

先決條件

建立Microsoft帳戶應用程式

若要在 Azure Active Directory B2C(Azure AD B2C)中啟用具有Microsoft帳戶的使用者登入,您必須在 Azure 入口網站中建立應用程式。 如需詳細資訊,請參閱使用 Microsoft 身分識別平台註冊應用程式。 如果您還沒有 Microsoft 帳戶,您可以在 https://www.live.com/ 獲得一個。

  1. 登入 Azure 入口網站

  2. 如果您有多個租戶的存取權,請選取頂端功能表中的設定圖示,從目錄 + 訂用帳戶功能表切換至Microsoft Entra ID 租戶。

  3. 選擇 Azure 入口網站左上角 的 [所有服務 ],然後搜尋並選取 [ 應用程式註冊]。

  4. 選取新增註冊

  5. 輸入應用程式的名稱。 例如 ,MSAapp1

  6. [支持的帳戶類型] 下,選取個人Microsoft帳戶(例如 Skype、Xbox)。

    如需不同帳戶類型選取專案的詳細資訊,請參閱 快速入門:使用Microsoft身分識別平臺註冊應用程式

  7. [重新導向 URI(選擇性)] 下,選取 [Web ],然後輸入 https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp。 如果您使用 自訂網域,請輸入 https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp。 將 your-tenant-name 替換為您的 Azure AD B2C 租使用者名稱,並將 your-domain-name 替換為您的自訂網域。

  8. 選取 註冊

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

  10. 選取 憑證和秘密

  11. 按兩下 [新增客戶端密碼]

  12. 輸入密碼 的描述 ,例如 應用程式密碼 1,然後按兩下 [ 新增]。

  13. 記錄 [ ] 資料行中顯示的應用程式密碼。 在下一節中設定識別提供者時,您需要客戶端密碼。

將Microsoft設定為識別提供者

  1. 使用至少具有外部識別提供者系統管理員許可權的帳戶登入 Azure 入口網站。
  2. 如果您有多個租用戶的存取權,請使用頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租用戶。
  3. 選擇 Azure 入口網站左上角 的 [所有服務 ],搜尋並選取 [Azure AD B2C]。
  4. 選取 [識別提供者],然後選取 [Microsoft帳戶]。
  5. 輸入名稱。 例如MSA
  6. 針對 [ 用戶端識別符],輸入您稍早建立之 Microsoft Entra 應用程式的應用程式 (client) 識別符。
  7. 對於用戶端密碼,請輸入您記錄的用戶端密碼。
  8. 選取 [儲存]。

將Microsoft識別提供者新增至使用者流程

此時,已設定 Microsoft 身分識別提供者,但尚未於任何登入頁面上使用。 若要將Microsoft識別提供者新增至使用者流程:

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

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

設定選擇性宣告

如果要從 Microsoft Entra ID 獲取 family_name and given_name 聲明,可以在 Azure 門戶 UI 或應用程式清單中為應用程式設定可選聲明。 有關詳細資訊,請參閱 如何向 Microsoft Entra 應用提供可選聲明

  1. 登入 Azure 入口網站。 搜尋並選取 Microsoft Entra ID
  2. 從 [ 管理] 區段中,選取 [ 應用程式註冊]。
  3. 選取您要在清單中設定選擇性宣告的應用程式。
  4. 從 [管理] 區段中,選取 [令牌設定][預覽]。
  5. 選擇 新增選擇性的聲明
  6. 選取您想要設定的令牌類型。
  7. 選取要新增的選擇性宣告。
  8. 按下 新增

建立原則金鑰

既然您已在 Microsoft Entra 租使用者中建立應用程式,您必須將該應用程式的用戶端密碼儲存在 Azure AD B2C 租使用者中。

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

將Microsoft設定為識別提供者

為了讓使用者能夠使用 Microsoft 帳戶登入,您必須將該帳戶定義為一個可以透過端點與 Azure AD B2C 通訊的宣告提供者。 端點提供一組宣告,供 Azure AD B2C 用來驗證特定使用者已驗證。

您可以將 Microsoft Entra ID 定義為宣告提供者,方法是在您的政策擴充檔案中新增 ClaimsProvider 元素。

  1. 開啟 TrustFrameworkExtensions.xml 原則檔案。

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

  3. 新增 ClaimsProvider ,如下所示:

    <ClaimsProvider>
      <Domain>live.com</Domain>
      <DisplayName>Microsoft Account</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="MSA-MicrosoftAccount-OpenIdConnect">
          <DisplayName>Microsoft Account</DisplayName>
          <Protocol Name="OpenIdConnect" />
          <Metadata>
            <Item Key="ProviderName">https://login.live.com</Item>
            <Item Key="METADATA">https://login.live.com/.well-known/openid-configuration</Item>
            <Item Key="response_types">code</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="scope">openid profile email</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
            <Item Key="client_id">Your Microsoft application client ID</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_MSASecret" />
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
            <OutputClaim ClaimTypeReferenceId="email" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" />
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. client_id 的值取代為您稍早記錄的 Microsoft Entra 應用程式的 Application (client) 識別碼

  5. 儲存檔案。

您現在已設定您的原則,使 Azure AD B2C 知道如何與 Microsoft Entra ID 中的 Microsoft 帳戶應用程式進行通訊。

新增使用者旅程圖

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

  1. 從入門套件開啟 TrustFrameworkBase.xml 檔案。
  2. 尋找並複製包含 Id="SignUpOrSignIn" 元素的整個內容。
  3. 開啟 TrustFrameworkExtensions.xml 並尋找 UserJourneys 元素。 如果元素不存在,新增一個。
  4. 貼上您複製的 UserJourney 元素作為 UserJourneys 元素子元素的整個內容。
  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="MicrosoftAccountExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="MicrosoftAccountExchange" TechnicalProfileReferenceId="MSA-MicrosoftAccount-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 應用程式。 Reply URL 應顯示 https://jwt.ms
  3. 選取 [ 立即執行] 按鈕。
  4. 從 [註冊或登入] 頁面中,選取 [Microsoft 以Microsoft帳戶登入。

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