共用方式為


在 Azure Active Directory B2C 中使用自定義原則設定多租使用者 Microsoft Entra ID 的登入

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

此功能僅適用於自定義原則。 針對安裝步驟,請在上述選取器中選取 [自定義原則 ]。

本文說明如何使用 Microsoft Entra 識別碼的多租使用者端點來啟用使用者的登入。 允許來自多個 Microsoft Entra 租使用者的使用者使用 Azure AD B2C 登入,而不需要為每個租使用者設定識別提供者。 不過,這些租 使用者中的任何來賓成員將無法 登入。 為此,您必須 個別設定每個租使用者

必要條件

注意

在本文中,它假設 在必要條件中所述的先前步驟中使用SocialAndLocalAccounts 入門套件。

註冊 Microsoft Entra 應用程式

若要在 Azure Active Directory B2C (Azure AD B2C) 中為具有 Microsoft Entra 帳戶的使用者啟用登入,您必須在 Azure 入口網站建立應用程式。 如需詳細資訊,請參閱使用 Microsoft 身分識別平台 註冊應用程式。

  1. 登入 Azure 入口網站

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

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

  4. 選取新增註冊

  5. 輸入應用程式的 [ 名稱 ]。 例如: Azure AD B2C App

  6. 針對此應用程式,選取 任何組織目錄中的 [帳戶] [任何 Microsoft Entra 目錄 – 多租使用者 ]。

  7. 針對 [重新導向 URI],接受 Web 的值,並在所有小寫字母中輸入下列 URL,其中 your-B2C-tenant-name 會取代為您的 Azure AD B2C 租使用者名稱。

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

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

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

  8. 選取註冊記錄應用程式 (用戶端) 識別碼,以供後續步驟使用。

  9. 選取 [ 憑證 & 密碼],然後選取 [ 新增客戶端密碼]。

  10. 輸入密碼的描述,選取到期日,然後選取 [新增]。 記錄秘密的值,以供後續步驟使用。

設定選擇性宣告

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

  1. 登入 Azure 入口網站。 搜尋並選取 [Microsoft Entra ID]
  2. 從 [管理] 區段中,選取 [應用程式註冊]。
  3. 選取您要在清單中設定選擇性宣告的應用程式。
  4. 從 [管理] 區段中,選取 [令牌設定]。
  5. 選取 [ 新增選擇性宣告]。
  6. 針對 [ 令牌類型],選取 [ 標識符]。
  7. 選取選擇性宣告以新增、 family_namegiven_name
  8. 選取新增。 如果 開啟 Microsoft Graph 電子郵件許可權(宣告出現在令牌中所需的許可權), 請啟用它,然後再次選取 [ 新增 ]。

[選擇性]確認您的應用程式真實性

發行者驗證 可協助用戶瞭解您 註冊之應用程式的真實性。 已驗證的應用程式表示應用程式的發行者已 使用其 Microsoft 合作夥伴網路 (MPN) 來驗證 其身分識別。 請了解如何將應用程式標示為發行者已完成驗證

建立原則金鑰

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

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

將 Microsoft Entra 識別碼設定為識別提供者

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

您可以將 Microsoft Entra ID 新增至 原則延伸檔案中的 ClaimsProvider 元素,將 Microsoft Entra 標識元定義為宣告提供者。

  1. 開啟 SocialAndLocalAccounts/TrustFrameworkExtensions.xml 檔案(請參閱您在必要條件中使用的檔案)。

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

  3. 新增 ClaimsProvider,如下所示:

    <ClaimsProvider>
      <Domain>commonaad</Domain>
      <DisplayName>Common AAD</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="AADCommon-OpenIdConnect">
          <DisplayName>Multi-Tenant AAD</DisplayName>
          <Description>Login with your Contoso account</Description>
          <Protocol Name="OpenIdConnect"/>
          <Metadata>
            <Item Key="METADATA">https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration</Item>
            <!-- Update the Client ID below to the Application ID -->
            <Item Key="client_id">00000000-0000-0000-0000-000000000000</Item>
            <Item Key="response_types">code</Item>
            <Item Key="scope">openid profile</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
            <Item Key="DiscoverMetadataByTokenIssuer">true</Item>
            <!-- The key below allows you to specify each of the Azure AD tenants that can be used to sign in. Update the GUIDs below for each tenant. -->
            <Item Key="ValidTokenIssuerPrefixes">https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000,https://login.microsoftonline.com/11111111-1111-1111-1111-111111111111</Item>
            <!-- The commented key below specifies that users from any tenant can sign-in. Uncomment if you would like anyone with an Azure AD account to be able to sign in. -->
            <!-- <Item Key="ValidTokenIssuerPrefixes">https://login.microsoftonline.com/</Item> -->
          </Metadata>
          <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_AADAppSecret"/>
          </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" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. ClaimsProvider 元素下,將 Domain 的值更新為唯一值,可用來區別它與其他識別提供者。

  5. TechnicalProfile 元素底下,更新 DisplayName 的值Multi-Tenant AAD例如 。 此值會顯示在登入頁面上的 [登入] 按鈕上。

  6. 將client_id設定為您稍早註冊之 Microsoft Entra 多租使用者應用程式的應用程式識別碼。

  7. CryptographicKeys 下,將 儲存體 ReferenceId 的值更新為稍早建立的原則密鑰名稱。 例如: B2C_1A_AADAppSecret

限制存取

使用 https://login.microsoftonline.com/ 作為 ValidTokenIssuerPrefixes 的值,可讓所有 Microsoft Entra 使用者登入您的應用程式。 更新有效的令牌簽發者清單,並限制存取可登入的特定 Microsoft Entra 租用戶用戶清單。

若要取得這些值,請查看您想要讓使用者登入的每個 Microsoft Entra 租使用者的 OpenID 連線 探索元數據。 元數據 URL 的格式類似於 https://login.microsoftonline.com/your-tenant/v2.0/.well-known/openid-configuration,其中 your-tenant 是您的 Microsoft Entra 租使用者名稱。 例如:

https://login.microsoftonline.com/fabrikam.onmicrosoft.com/v2.0/.well-known/openid-configuration

針對應該用來登入的每個 Microsoft Entra 租使用者執行下列步驟:

  1. 開啟瀏覽器,然後移至租使用者的OpenID連線元數據URL。 issuer尋找物件並記錄其值。 看起來應該類似 https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000/v2.0
  2. 將值複製並貼到 ValidTokenIssuerPrefixes 機碼中。 以逗號分隔多個簽發者。 具有兩個簽發者的範例會出現在先前 ClaimsProvider 的 XML 範例中。

新增使用者旅程圖

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

  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="AzureADCommonExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="AzureADCommonExchange" TechnicalProfileReferenceId="AADCommon-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. 從 [註冊或登入] 頁面中,選取 [一般 Microsoft Entra 標識符 ] 以使用 Microsoft Entra 帳戶登入。

若要測試多租使用者登入功能,請使用存在另一個 Microsoft Entra 租使用者之使用者的認證,執行最後兩個步驟。 複製 [ 立即執行] 端點 ,並在私人瀏覽器視窗中開啟它,例如 Google Chrome 中的 Incognito Mode 或 Microsoft Edge 中的 InPrivate 視窗。 在私人瀏覽器視窗中開啟可讓您不使用任何目前快取的 Microsoft Entra 認證來測試完整的使用者旅程圖。

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

下一步