共用方式為


使用 Azure Active Directory B2C 設定 Transmit Security 以進行無密碼驗證

在本教學課程中,瞭解如何整合 Azure Active Directory B2C (Azure AD B2C) 驗證與 傳輸安全性 BindID,這是無密碼驗證解決方案。 BindID 使用強式 Fast Identity Online (FIDO2) 生物特徵辨識驗證來進行可靠的全通道驗證。 此解決方案可確保跨裝置和通道的客戶順暢登入體驗,同時減少詐騙、網路釣魚和認證重複使用。

案例描述

下列架構圖說明實作。

BindID 和 Azure AD B2C 架構的圖表。

  1. 使用者開啟 Azure AD B2C 登入頁面,然後登入或註冊。
  2. Azure AD B2C 會使用 OpenID Connect (OIDC) 要求,將使用者重新導向至 BindID。
  3. BindID 會使用無應用程式 FIDO2 生物特徵辨識來驗證使用者,例如指紋。
  4. 分散式驗證回應會傳回至 BindID。
  5. OIDC 回應會傳遞至 Azure AD B2C。
  6. 根據驗證結果,使用者會被授與或拒絕對應用程式的存取權。

必要條件

若要開始,您需要:

在 BindID 中註冊應用程式

開始進行之前:

  1. 移至 [developer.bindid.io],以 設定您的應用程式
  2. BindID 管理員 Portal中新增應用程式。 需要登入。
屬性 Description
名稱 應用程式名稱
網域 輸入 your-B2C-tenant-name.onmicrosoft.com。 以您的 Azure AD B2C 租使用者取代 your-B2C-tenant
重新導向 URI https://jwt.ms/
重新導向 URL 輸入 https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/oauth2/authresp。 以您的 Azure AD B2C 租使用者取代 your-B2C-tenant 。 針對自訂網域,請將 取代 your-B2C-tenant-name.b2clogin.com 為您的自訂網域。
  1. 註冊時, 會出現 [用戶端識別碼 ] 和 [ 用戶端密碼 ]。
  2. 記錄稍後要使用的值。

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

如需下列指示,請使用 目錄搭配您的 Azure AD B2C 租使用者。

  1. 以全域管理員身分登入Azure 入口網站
  2. 在入口網站工具列中,選取 [目錄 + 訂用帳戶]。
  3. 入口網站設定上 |[目錄 + 訂 用帳戶] 頁面的 [目錄名稱 ] 清單中,尋找 Azure AD B2C 目錄。
  4. 選取 [切換]。
  5. 在Azure 入口網站左上角,選取[所有服務]。
  6. 搜尋並選取 [Azure AD B2C]。
  7. 選取 [識別提供者]。
  8. 選取 [新增 OpenID Connect 提供者]。
  9. 輸入 [名稱] 。
  10. 針對 [中繼資料 URL],輸入 https://signin.bindid-sandbox.io/.well-known/openid-configuration
  11. 針對 [用戶端識別碼],輸入您記錄的 [用戶端識別碼]。
  12. 針對 [用戶端密碼],輸入您記錄的 [用戶端密碼]。
  13. 在 [範圍] 中,輸入 openid email
  14. 在 [回應類型] 中,選取 [程式碼]。
  15. 在 [回應模式] 中,選取 [form_post]。
  16. [識別提供者宣告對應] 底下,針對 [使用者識別碼],選取 sub
  17. 針對[Email],選取 email
  18. 選取 [儲存]。

建立使用者流程

  1. 在您的 Azure AD B2C 租用戶中,選取 [原則] 下的 [使用者流程]。
  2. 選取 [新增使用者流程]。
  3. 選取 [註冊並登入 使用者流程類型]。
  4. 選取 [建立]。
  5. 輸入 [名稱] 。
  6. [識別提供者] 底下,針對 [ 本機帳戶],選取 [無]。 此動作會停用電子郵件和密碼型驗證。
  7. 針對 [自訂識別提供者],選取已建立的 BindID 識別提供者,例如 使用 BindID 登入
  8. 選取 [建立]。

測試使用者流程

  1. 在 Azure AD B2C 租使用者中,選取 [使用者流程]。
  2. 選取已建立的使用者流程,例如 B2C_1_signupsignin
  3. 針對 [應用程式],選取您註冊的 Web 應用程式。 回復 URLhttps://jwt.ms
  4. 選取 [執行使用者流程]。
  5. 瀏覽器會重新導向至 BindID 登入頁面。
  6. 輸入已註冊的帳戶電子郵件。
  7. 使用無應用程式 FIDO2 生物特徵辨識進行驗證,例如指紋。
  8. 瀏覽器會重新導向至 https://jwt.ms 。 Azure AD B2C 所傳回之權杖的內容隨即出現。

建立 BindID 原則金鑰

將 BindID 應用程式用戶端密碼新增為原則金鑰。 如需下列指示,請使用 目錄搭配您的 Azure AD B2C 租使用者。

  1. 登入 Azure 入口網站
  2. 在入口網站工具列中,選取 [目錄 + 訂用帳戶]。
  3. 入口網站設定上 |[目錄 + 訂 用帳戶] 頁面的 [目錄名稱 ] 清單中,找出 Azure AD B2C 目錄。
  4. 選取 [切換]。
  5. 在 [概觀] 頁面的 [原則] 下,選取 [Identity Experience Framework]。
  6. 選取 [ 原則金鑰]。
  7. 選取 [新增]。
  8. 針對 [選項],選取 [手動]。
  9. 輸入 [名稱] 。 前置詞 B2C_1A_ 會附加至索引鍵名稱。
  10. [秘密] 中,輸入您記錄的用戶端密碼。
  11. 針對 [金鑰使用方法] 選取 [簽章]。
  12. 選取 [建立]。

將 BindID 設定為識別提供者

若要使用 BindID 啟用登入,請將 BindID 定義為 Azure AD B2C 透過端點與其通訊的宣告提供者。 端點會提供 Azure AD B2C 用來驗證裝置上以數位身分識別驗證的使用者。

將 BindID 新增為宣告提供者。 若要開始使用,請從 GitHub 取得自訂原則入門套件,然後使用您的 Azure AD B2C 租使用者名稱更新 SocialAndLocalAccounts 入門套件中的 XML 檔案:

  1. 開啟 ZIP 檔案夾 active-directory-b2c-custom-policy-starterpack-main.zip 或複製存放庫:

        git clone https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack
    
  2. LocalAccounts 目錄中的檔案中,以 Azure AD B2C 租使用者名稱取代字串 yourtenant

  3. 開啟 LocalAccounts/ TrustFrameworkExtensions.xml

  4. 尋找 ClaimsProviders 元素。 如果未出現,請在根項目底下新增它。

  5. 新增類似下列範例的新 ClaimsProvider

     <ClaimsProvider>
         <Domain>signin.bindid-sandbox.io</Domain>
         <DisplayName>BindID</DisplayName>
         <TechnicalProfiles>
           <TechnicalProfile Id="BindID-OpenIdConnect">
             <DisplayName>BindID</DisplayName>
             <Protocol Name="OpenIdConnect" />
             <Metadata>
               <Item Key="METADATA">https://signin.bindid-sandbox.io/.well-known/openid-configuration</Item>
                <!-- Update the Client ID below to the BindID Application ID -->
               <Item Key="client_id">00000000-0000-0000-0000-000000000000</Item>
               <Item Key="response_types">code</Item>
               <Item Key="scope">openid email</Item>
               <Item Key="response_mode">form_post</Item>
               <Item Key="HttpBinding">POST</Item>
               <Item Key="UsePolicyInRedirectUri">false</Item>
               <Item Key="AccessTokenResponseFormat">json</Item>
             </Metadata>
             <CryptographicKeys>
               <Key Id="client_secret" StorageReferenceId="B2C_1A_BindIDClientSecret" />
             </CryptographicKeys>
             <OutputClaims>
               <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
               <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
               <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
               <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
             </OutputClaims>
             <OutputClaimsTransformations>
               <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
               <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
               <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
             </OutputClaimsTransformations>
             <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
           </TechnicalProfile>
         </TechnicalProfiles>
       </ClaimsProvider>    
    
  6. 使用您記錄的 BindID 應用程式識別碼 來設定client_id

  7. 選取 [儲存]。

新增使用者旅程圖

身分識別提供者不在登入頁面上。 如果您有自訂使用者旅程圖,請繼續 將識別提供者新增至使用者旅程圖,否則建立重複的範本使用者旅程圖:

  1. 從入門套件開啟檔案 LocalAccounts/ TrustFrameworkBase.xml
  2. 尋找並複製包含 Id=SignUpOrSignInUserJourney元素的內容。
  3. 開啟 LocalAccounts/ TrustFrameworkExtensions.xml
  4. 尋找 UserJourneys 元素。 如果沒有元素,請新增一個專案。
  5. 將 UserJourney 元素貼上為 UserJourneys 元素的子系。
  6. 重新命名使用者旅程 圖識別碼

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

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

  1. 在使用者旅程圖中,尋找包含 Type=CombinedSignInAndSignUpType=ClaimsProviderSelection 的協調流程步驟元素。 這通常是第一個協調流程步驟。 ClaimsProviderSelections元素具有使用者用來登入的識別提供者清單。 元素的順序會控制登入按鈕的順序。
  2. 新增 ClaimsProviderSelection XML 元素。
  3. TargetClaimsExchangeId 的值設定為易記名稱。
  4. 新增 ClaimsExchange 元素。
  5. 識別碼設定為目標宣告交換識別碼的值。 此動作會將 BindID 按鈕連結至 BindID-SignIn
  6. TechnicalProfileReferenceId 值更新為您建立的技術設定檔識別碼。

下列 XML 示範與識別提供者的協調流程使用者旅程圖。

    <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
      <ClaimsProviderSelections>
        ...
        <ClaimsProviderSelection TargetClaimsExchangeId="BindIDExchange" />
      </ClaimsProviderSelections>
      ...
    </OrchestrationStep>
    
    <OrchestrationStep Order="2" Type="ClaimsExchange">
      ...
      <ClaimsExchanges>
        <ClaimsExchange Id="BindIDExchange" TechnicalProfileReferenceId="BindID-OpenIdConnect" />
      </ClaimsExchanges>
    </OrchestrationStep>

設定信賴憑證者原則

信賴憑證者原則,例如 SignUpOrSignIn.xml,會指定 Azure AD B2C 執行的使用者旅程圖。 您可以藉由調整PolicyProfile TechnicalProfile元素的OutputClaims元素來控制傳遞至應用程式的宣告。 在本教學課程中,應用程式會接收使用者屬性,例如顯示名稱、指定名稱、姓氏、電子郵件、objectId、識別提供者和 tenantId。

請參閱 Azure-Samples/active-directory-b2c-custom-policy-starterpack

  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignInWithBindID" />
    <TechnicalProfile Id="BindID-OpenIdConnect">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="email" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
        <OutputClaim ClaimTypeReferenceId="identityProvider" />
        <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>

上傳自訂原則

  1. 登入 Azure 入口網站
  2. 在入口網站工具列中,選取 [目錄 + 訂用帳戶]。
  3. 入口網站設定上 |[目錄 + 訂 用帳戶] 頁面的 [ 目錄名稱] 清單中,尋找 Azure AD B2C 目錄。
  4. 選取 [切換]。
  5. 在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]。
  6. 在 [原則] 之下,選取 [Identity Experience Framework]。
  7. 選取 [上傳自訂原則]。
  8. 依下列順序上傳 LocalAccounts 入門套件中的檔案:
  • 基底原則,例如 TrustFrameworkBase.xml
  • 當地語系化原則,例如 TrustFrameworkLocalization.xml
  • 擴充原則,例如 TrustFrameworkExtensions.xml
  • 信賴憑證者原則,例如 SignUpOrSignIn.xml

測試自訂原則

如需下列指示,請使用目錄搭配您的 Azure AD B2C 租使用者。

  1. 在 Azure AD B2C 租使用者中,然後在 [ 原則] 底下,選取 [ 身分識別體驗架構]。
  2. 在 [自訂原則] 下,選取 [B2C_1A_signup_signin]。
  3. 針對 [應用程式],選取您註冊的 Web 應用程式。 回復 URLhttps://jwt.ms
  4. 選取 [立即執行]。
  5. 瀏覽器會重新導向至 BindID 登入頁面。
  6. 輸入已註冊的帳戶電子郵件。
  7. 使用無應用程式 FIDO2 生物特徵辨識進行驗證,例如指紋。
  8. 瀏覽器會重新導向至 https://jwt.ms 。 Azure AD B2C 傳回的權杖內容隨即出現。

後續步驟

如需其他資訊,請檢閱下列文章: