使用 Azure Active Directory B2C 設定 Transmit Security 以進行無密碼驗證
在本教學課程中,瞭解如何整合 Azure Active Directory B2C (Azure AD B2C) 驗證與 傳輸安全性 BindID,這是無密碼驗證解決方案。 BindID 使用強式 Fast Identity Online (FIDO2) 生物特徵辨識驗證來進行可靠的全通道驗證。 此解決方案可確保跨裝置和通道的客戶順暢登入體驗,同時減少詐騙、網路釣魚和認證重複使用。
案例描述
下列架構圖說明實作。
- 使用者開啟 Azure AD B2C 登入頁面,然後登入或註冊。
- Azure AD B2C 會使用 OpenID Connect (OIDC) 要求,將使用者重新導向至 BindID。
- BindID 會使用無應用程式 FIDO2 生物特徵辨識來驗證使用者,例如指紋。
- 分散式驗證回應會傳回至 BindID。
- OIDC 回應會傳遞至 Azure AD B2C。
- 根據驗證結果,使用者會被授與或拒絕對應用程式的存取權。
必要條件
若要開始,您需要:
- Microsoft Entra訂用帳戶
- 如果您沒有帳戶,請取得 Azure 免費帳戶
- 連結至 Azure 訂用帳戶的 Azure AD B2C 租使用者
- BindID 租使用者
- 移至 transmitsecurity.com 以 開始使用
- 在 Azure 入口網站 中註冊 Web 應用程式
- Azure AD B2C 自訂原則
- 如果您無法使用原則,請參閱 教學課程:在 Azure AD B2C 中建立使用者流程和自訂原則
在 BindID 中註冊應用程式
開始進行之前:
- 移至 [developer.bindid.io],以 設定您的應用程式。
- 在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 為您的自訂網域。 |
- 註冊時, 會出現 [用戶端識別碼 ] 和 [ 用戶端密碼 ]。
- 記錄稍後要使用的值。
在 Azure AD B2C 中將 BindID 設定為識別提供者
如需下列指示,請使用 目錄搭配您的 Azure AD B2C 租使用者。
- 以全域管理員身分登入Azure 入口網站。
- 在入口網站工具列中,選取 [目錄 + 訂用帳戶]。
- 在 入口網站設定上 |[目錄 + 訂 用帳戶] 頁面的 [目錄名稱 ] 清單中,尋找 Azure AD B2C 目錄。
- 選取 [切換]。
- 在Azure 入口網站左上角,選取[所有服務]。
- 搜尋並選取 [Azure AD B2C]。
- 選取 [識別提供者]。
- 選取 [新增 OpenID Connect 提供者]。
- 輸入 [名稱] 。
- 針對 [中繼資料 URL],輸入
https://signin.bindid-sandbox.io/.well-known/openid-configuration
。 - 針對 [用戶端識別碼],輸入您記錄的 [用戶端識別碼]。
- 針對 [用戶端密碼],輸入您記錄的 [用戶端密碼]。
- 在 [範圍] 中,輸入
openid email
。 - 在 [回應類型] 中,選取 [程式碼]。
- 在 [回應模式] 中,選取 [form_post]。
- 在 [識別提供者宣告對應] 底下,針對 [使用者識別碼],選取
sub
。 - 針對[Email],選取
email
。 - 選取 [儲存]。
建立使用者流程
- 在您的 Azure AD B2C 租用戶中,選取 [原則] 下的 [使用者流程]。
- 選取 [新增使用者流程]。
- 選取 [註冊並登入 使用者流程類型]。
- 選取 [建立]。
- 輸入 [名稱] 。
- 在 [識別提供者] 底下,針對 [ 本機帳戶],選取 [無]。 此動作會停用電子郵件和密碼型驗證。
- 針對 [自訂識別提供者],選取已建立的 BindID 識別提供者,例如 使用 BindID 登入。
- 選取 [建立]。
測試使用者流程
- 在 Azure AD B2C 租使用者中,選取 [使用者流程]。
- 選取已建立的使用者流程,例如 B2C_1_signupsignin。
- 針對 [應用程式],選取您註冊的 Web 應用程式。
回復 URL為
https://jwt.ms
。 - 選取 [執行使用者流程]。
- 瀏覽器會重新導向至 BindID 登入頁面。
- 輸入已註冊的帳戶電子郵件。
- 使用無應用程式 FIDO2 生物特徵辨識進行驗證,例如指紋。
- 瀏覽器會重新導向至
https://jwt.ms
。 Azure AD B2C 所傳回之權杖的內容隨即出現。
建立 BindID 原則金鑰
將 BindID 應用程式用戶端密碼新增為原則金鑰。 如需下列指示,請使用 目錄搭配您的 Azure AD B2C 租使用者。
- 登入 Azure 入口網站。
- 在入口網站工具列中,選取 [目錄 + 訂用帳戶]。
- 在 入口網站設定上 |[目錄 + 訂 用帳戶] 頁面的 [目錄名稱 ] 清單中,找出 Azure AD B2C 目錄。
- 選取 [切換]。
- 在 [概觀] 頁面的 [原則] 下,選取 [Identity Experience Framework]。
- 選取 [ 原則金鑰]。
- 選取 [新增]。
- 針對 [選項],選取 [手動]。
- 輸入 [名稱] 。 前置詞
B2C_1A_
會附加至索引鍵名稱。 - 在 [秘密] 中,輸入您記錄的用戶端密碼。
- 針對 [金鑰使用方法] 選取 [簽章]。
- 選取 [建立]。
將 BindID 設定為識別提供者
若要使用 BindID 啟用登入,請將 BindID 定義為 Azure AD B2C 透過端點與其通訊的宣告提供者。 端點會提供 Azure AD B2C 用來驗證裝置上以數位身分識別驗證的使用者。
將 BindID 新增為宣告提供者。 若要開始使用,請從 GitHub 取得自訂原則入門套件,然後使用您的 Azure AD B2C 租使用者名稱更新 SocialAndLocalAccounts 入門套件中的 XML 檔案:
開啟 ZIP 檔案夾 active-directory-b2c-custom-policy-starterpack-main.zip 或複製存放庫:
git clone https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack
在 LocalAccounts 目錄中的檔案中,以 Azure AD B2C 租使用者名稱取代字串
yourtenant
。開啟
LocalAccounts/ TrustFrameworkExtensions.xml
。尋找 ClaimsProviders 元素。 如果未出現,請在根項目底下新增它。
新增類似下列範例的新 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>
使用您記錄的 BindID 應用程式識別碼 來設定client_id 。
選取 [儲存]。
新增使用者旅程圖
身分識別提供者不在登入頁面上。 如果您有自訂使用者旅程圖,請繼續 將識別提供者新增至使用者旅程圖,否則建立重複的範本使用者旅程圖:
- 從入門套件開啟檔案
LocalAccounts/ TrustFrameworkBase.xml
。 - 尋找並複製包含
Id=SignUpOrSignIn
之UserJourney元素的內容。 - 開啟
LocalAccounts/ TrustFrameworkExtensions.xml
。 - 尋找 UserJourneys 元素。 如果沒有元素,請新增一個專案。
- 將 UserJourney 元素貼上為 UserJourneys 元素的子系。
- 重新命名使用者旅程 圖識別碼。
將識別提供者新增至使用者旅程圖
將新的識別提供者新增至使用者旅程圖。
- 在使用者旅程圖中,尋找包含
Type=CombinedSignInAndSignUp
或Type=ClaimsProviderSelection
的協調流程步驟元素。 這通常是第一個協調流程步驟。 ClaimsProviderSelections元素具有使用者用來登入的識別提供者清單。 元素的順序會控制登入按鈕的順序。 - 新增 ClaimsProviderSelection XML 元素。
- 將 TargetClaimsExchangeId 的值設定為易記名稱。
- 新增 ClaimsExchange 元素。
- 將識別碼設定為目標宣告交換識別碼的值。 此動作會將 BindID 按鈕連結至
BindID-SignIn
。 - 將 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>
上傳自訂原則
- 登入 Azure 入口網站。
- 在入口網站工具列中,選取 [目錄 + 訂用帳戶]。
- 在 入口網站設定上 |[目錄 + 訂 用帳戶] 頁面的 [ 目錄名稱] 清單中,尋找 Azure AD B2C 目錄。
- 選取 [切換]。
- 在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]。
- 在 [原則] 之下,選取 [Identity Experience Framework]。
- 選取 [上傳自訂原則]。
- 依下列順序上傳 LocalAccounts 入門套件中的檔案:
- 基底原則,例如
TrustFrameworkBase.xml
- 當地語系化原則,例如
TrustFrameworkLocalization.xml
- 擴充原則,例如
TrustFrameworkExtensions.xml
- 信賴憑證者原則,例如
SignUpOrSignIn.xml
測試自訂原則
如需下列指示,請使用目錄搭配您的 Azure AD B2C 租使用者。
- 在 Azure AD B2C 租使用者中,然後在 [ 原則] 底下,選取 [ 身分識別體驗架構]。
- 在 [自訂原則] 下,選取 [B2C_1A_signup_signin]。
- 針對 [應用程式],選取您註冊的 Web 應用程式。 回復 URL 為
https://jwt.ms
。 - 選取 [立即執行]。
- 瀏覽器會重新導向至 BindID 登入頁面。
- 輸入已註冊的帳戶電子郵件。
- 使用無應用程式 FIDO2 生物特徵辨識進行驗證,例如指紋。
- 瀏覽器會重新導向至
https://jwt.ms
。 Azure AD B2C 傳回的權杖內容隨即出現。
後續步驟
如需其他資訊,請檢閱下列文章: