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

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

注意

在 Azure Active Directory B2C 中,自訂原則的主要用途為處理複雜的案例。 在大部分情況下,我們建議使用內建的使用者流程。 如果您尚未執行此操作,請於在 Active Directory B2C 中開始使用自訂原則中,了解自訂原則入門套件。

必要條件

驗證應用程式的發行者網域

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

  1. 使用 Microsoft 合作夥伴網路 (MPN) 帳戶驗證公司的身分識別。 此程序會驗證您公司和公司主要連絡人的相關資訊。
  2. 使用下列其中一個選項完成發行者驗證流程,將 MPN 帳戶與應用程式註冊建立關聯:

建立 Microsoft 帳戶應用程式

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

  1. 登入 Azure 入口網站

  2. 確定您使用的目錄包含了您的 Azure AD 租用戶。 選取入口網站工具列中的目錄 + 訂閱圖示。

  3. 在 [入口網站設定] | [目錄 + 訂用帳戶] 頁面的 [目錄名稱] 清單中尋找您的 Azure AD 目錄,然後選取 [切換]。

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

  5. 選取 [新增註冊]。

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

  7. 在 [支援的帳戶類型] 底下,選取 [任何組織目錄中的帳戶 (任何 Azure AD 目錄 - 多租用戶) 和個人 Microsoft 帳戶 (例如 Skype、Xbox)]。

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

  8. 在 [重新導向 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 換成的租用戶名稱,將 your-domain-name 換成您的自訂網域。

  9. 選取 [註冊]

  10. 記錄應用程式 [概觀] 頁面上所顯示的應用程式 (用戶端) 識別碼。 在下一節中設定識別提供者時需要這項資訊。

  11. 選取 [憑證和密碼]

  12. 按一下 [新增用戶端密碼]

  13. 輸入該密碼的 [描述] (例如應用程式密碼 1),然後按一下 [新增]。

  14. 記錄 [值] 欄中顯示的應用程式密碼。 在下一節中設定識別提供者時需要用戶端密碼。

將 Microsoft 設定為識別提供者

  1. 以 Azure AD B2C 租用戶的全域管理員身分登入 Azure 入口網站
  2. 確定您使用的目錄包含您的 Azure AD B2C 租用戶。 選取入口網站工具列中的目錄 + 訂閱圖示。
  3. 在 [入口網站設定] | [目錄 + 訂用帳戶] 頁面上,在 [目錄名稱] 清單中尋找您的 Azure AD B2C 目錄,然後選取 [切換]。
  4. 選擇 Azure 入口網站左上角的 [所有服務],搜尋並選取 [Azure AD B2C]。
  5. 選取 [識別提供者],然後選取 [Microsoft 帳戶]。
  6. 輸入 [名稱]。 例如 MSA
  7. 在 [用戶端識別碼],輸入您先前建立之 Azure AD 應用程式的應用程式 (用戶端) 識別碼。
  8. 在 [用戶端密碼] 中,輸入您記下的用戶端密碼。
  9. 選取 [儲存]。

將 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 傳回的權杖內容。

設定選擇性宣告

如果您想要從 Azure AD 取得 family_namegiven_name 宣告,您可以在 Azure 入口網站 UI 或應用程式資訊清單中設定應用程式的選擇性宣告。 如需詳細資訊,請參閱如何為 Azure AD 應用程式提供選擇性宣告

  1. 登入 Azure 入口網站。 搜尋並選取 [Azure Active Directory]。
  2. 從 [管理] 區段中,選取 [應用程式註冊]。
  3. 從清單中,選取您要為其設定選擇性宣告的應用程式。
  4. 從 [管理] 區段中,選取 [權杖設定 (預覽)]。
  5. 選取 [新增選擇性宣告]。
  6. 選取您要設定的權杖類型。
  7. 選取要新增的選擇性宣告。
  8. 按一下 [新增] 。

建立原則金鑰

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

  1. 登入 Azure 入口網站
  2. 確定您使用的目錄包含您的 Azure AD B2C 租用戶。 選取入口網站工具列中的目錄 + 訂閱圖示。
  3. 在 [入口網站設定] | [目錄 + 訂用帳戶] 頁面上,在 [目錄名稱] 清單中尋找您的 Azure AD B2C 目錄,然後選取 [切換]。
  4. 選擇 Azure 入口網站左上角的 [所有服務],然後搜尋並選取 [Azure AD B2C]。
  5. 在 [概觀] 頁面上,選取 [識別體驗架構]。
  6. 選取 [原則金鑰],然後選取 [新增]。
  7. 針對 [選項] 選擇 Manual
  8. 輸入原則金鑰的 [名稱]。 例如: MSASecret 。 金鑰名稱前面會自動新增前置詞 B2C_1A_
  9. 在 [祕密] 中,輸入您在上一節記下的用戶端密碼。
  10. 針對 [金鑰使用方法],選取 Signature
  11. 按一下 [建立]。

將 Microsoft 設定為識別提供者

若要讓使用者以 Microsoft 帳戶登入,您必須將該帳戶定義為可讓 Azure AD B2C 透過端點來通訊的宣告提供者。 此端點會提供一組宣告,由 Azure AD B2C 用來確認特定使用者已驗證。

您可以藉由在原則擴充檔中新增 ClaimsProvider 元素,將 Azure AD 定義成宣告提供者。

  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 的值取代為您稍早記錄的 Azure AD 應用程式的「應用程式 (用戶端) 識別碼」。

  5. 儲存檔案。

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

新增使用者旅程圖

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

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

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

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

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

  2. 在下一個協調流程步驟中,新增 ClaimsExchange 元素。 將 Id 設定為目標宣告交換識別碼的值。將 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. 在 [原則] 之下,選取 [Identity Experience Framework]。
  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 傳回的權杖內容。