你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure Active Directory B2C 配置 Transmit Security 以进行密钥认证

重要

自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息

本教程介绍如何将 Azure Active Directory B2C (Azure AD B2C) 身份验证与 传输安全性的托管密钥身份验证解决方案集成。 Transmit Security 使用强大的快速在线身份认证 (FIDO2) 生物特征识别实现可靠的全通道身份验证。 该解决方案可确保跨设备和渠道的客户顺利登录体验,同时减少欺诈、网络钓鱼和凭据重用。

方案说明

以下体系结构图演示了实现:

传输和 Azure AD B2C 架构的示意图。

  1. 用户打开 Azure AD B2C 登录页,然后登录或注册。
  2. Azure AD B2C 使用 OpenID Connect (OIDC) 请求将用户重定向到传输安全性。
  3. 传输安全性使用无应用 FIDO2 生物识别(例如指纹)对用户进行身份验证。
  4. 去中心化的身份验证响应被返回给Transmit Security。
  5. OIDC 响应将传递到 Azure AD B2C。
  6. 根据验证结果,向用户授予或拒绝对应用程序的访问权限。

先决条件

若要开始,需要:

步骤 1:创建传输应用

登录到 传输管理门户创建应用程序

  1. “应用程序”中,选择“ 添加应用程序”。

  2. 使用以下属性配置应用程序:

    资产 DESCRIPTION
    应用程序名称 应用程序名称
    客户端名称 客户端名称
    重定向 URI https://<your-B2C-tenant>.b2clogin.com/<your-B2C-tenant>.onmicrosoft.com/oauth2/authresp 在其中 <your-B2C-tenant> 是你的 Azure AD B2C 租户域(或者 <your-B2C-tenant>.b2clogin.com 是你的自定义域)
  3. 选择 并添加

  4. 注册后,会显示 客户端 ID客户端密码 。 记录稍后要使用的值。

步骤 2:配置登录体验

传输管理门户中,配置用户身份验证体验:

  1. 选择 “身份验证”,然后选择“ 体验管理”。

  2. 从下拉菜单中选择应用程序。

  3. 使用以下属性配置应用程序:

    资产 DESCRIPTION
    用户标识符 选择“电子邮件
    主要身份验证方法 选择 Passkey
    辅助身份验证方法 仅启用 WebAuthn QR电子邮件 OTP
    选择用户信息 删除所有默认字段
  4. 选择“保存”

步骤 3:将 Transmit 添加为标识提供者

若要使用户能够使用 Transmit Security 登录,请将 Transmit Security 配置为新的身份提供者。 在 Azure AD B2C 中,请执行以下步骤:

  1. 以至少 B2C IEF 策略管理员身份登录到 Azure 门户

  2. 在门户工具栏中,选择 “目录 + 订阅”。

  3. 门户设置 |“目录 + 订阅 ”页,在 “目录名称 ”列表中,找到 Azure AD B2C 目录,然后选择“ 切换”。

  4. Azure 服务下,选择 “Azure AD B2C ”(或选择 “更多服务 ”,并使用 “所有服务 ”搜索框搜索 Azure AD B2C)。

  5. 选择“标识提供程序”,然后选择“新建 OpenID Connect 提供程序” 。

  6. 按如下所示配置提供程序:

    资产 DESCRIPTION
    名称 名称,例如 Transmit Security
    元数据 URL https://api.transmitsecurity.io/cis/oidc/.well-known/openid-configuration
    客户端 ID Transmit 提供的客户端 ID
    客户端密码 由Transmit提供的客户端密钥
    范围 openid email
    响应类型 代码
    响应模式 form_post
    显示名称 email
    电子邮件 email
  7. 选择“保存”

步骤 4:创建用户流

此时,Transmit Security 标识提供者已设置,但在任何登录页中尚不可用。 将 Transmit Security 身份提供者添加到用户流中:

  1. 在 Azure AD B2C 租户的 “策略”下,选择 “用户流”。
  2. 选择“新建用户流”。
  3. 选择 “注册”并登录 用户流类型,然后选择“ 创建”。
  4. 为用户流输入一个名称,如signupsignin
  5. “标识提供者”下:
    • 对于 “本地帐户”,请选择“ ”。
    • 对于 自定义标识提供者,请选择 Transmit Security 提供者。
  6. 选择“ 创建 ”以添加用户流。

步骤 5:测试用户流

  1. 在 Azure AD B2C 租户中,选择 “用户流”。
  2. 选择创建的用户流,例如 B2C_1_signupsignin
  3. 选择 “运行用户流” :
    • 对于 应用程序,请选择已注册的 Web 应用程序。
    • 对于 回复 URL,请选择 https://jwt.ms
  4. 选择运行用户流
  5. 浏览器重定向到 Transmit 的登录页面。
  6. 完成登录流:输入帐户电子邮件并使用生物识别进行身份验证(例如指纹)。
  7. 浏览器使用 Azure AD B2C 令牌重定向到 https://jwt.ms

步骤 3:创建策略密钥

您需要存储之前在您的 Azure AD B2C 租户中记录的 Transmit 应用程序的客户端密钥。

  1. 登录到 Azure 门户

  2. 在门户工具栏中,选择 “目录 + 订阅”。

  3. 门户设置 |“目录 + 订阅 ”页,在 “目录名称 ”列表中,找到 Azure AD B2C 目录,然后选择“ 切换”。

  4. 在“概述”页上的“ 策略”下,选择“ 标识体验框架”。

  5. 选择“策略密钥”,然后选择“添加”

  6. 按如下所示配置策略密钥:

    资产 DESCRIPTION
    选项 手动
    名称 策略密钥名称,例如 TransmitClientSecret
    机密 由Transmit提供的客户端密钥
    密钥用法 签名
  7. 选择“ 创建 ”以添加策略密钥。

步骤 4:将 Transmit 添加为标识提供者

若要启用 Transmit Security 登录,请将传 Transmit Security 定义为 Azure AD B2C 通过终结点与之通信的声明提供程序。 终结点提供 Azure AD B2C 使用的声明,用于验证用户在设备上使用数字标识进行身份验证。

可以通过将 Transmit Security 添加到策略扩展文件中的 ClaimsProviders 元素中,将其定义为声明提供程序。

  1. 从 GitHub 获取自定义策略初学者包,然后使用 Azure AD B2C 租户名称更新 SocialAndLocalAccounts 初学者包中的 XML 文件:

    1. 下载 .zip 文件 或克隆存储库:

      git clone https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack
      
    2. LocalAccounts 目录中的文件中,将字符串 yourtenant 替换为 Azure AD B2C 租户名称。

  2. 打开 LocalAccounts/ TrustFrameworkExtensions.xml

  3. 找到 ClaimsProviders 元素。 如果未显示,请在根元素下添加它。

  4. 添加类似于以下示例的新 ClaimsProvider

     <ClaimsProvider>
         <Domain>api.transmitsecurity.io</Domain>
         <DisplayName>Transmit</DisplayName>
         <TechnicalProfiles>
           <TechnicalProfile Id="TS-OpenIdConnect">
             <DisplayName>Transmit</DisplayName>
             <Protocol Name="OpenIdConnect" />
             <Metadata>
               <Item Key="METADATA">https://api.transmitsecurity.io/cis/oidc/.well-known/openid-configuration</Item>
                <!-- Update the Client ID below to the Transmit Security client ID -->
               <Item Key="client_id">00001111-aaaa-2222-bbbb-3333cccc4444</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_TransmitClientSecret" />
             </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>    
    
  5. 使用 Transmit Security 客户端 ID 设置 client_id

  6. 使用创建的策略密钥的名称更新 client_secret 部分(例如 ,B2C_1A_TransmitClientSecret):

    <Key Id="client_secret" StorageReferenceId="B2C_1A_TransmitClientSecret" />
    
  7. 选择“保存”

步骤 5:添加用户流程

此时,标识提供者已设置,但在任何登录页中尚不可用。 如果你有自定义用户旅程,请继续执行“将 Transmit 添加到用户旅程”步骤。 否则,请创建重复的模板用户旅程:

  1. 在入门包中,打开 LocalAccounts/ TrustFrameworkBase.xml 文件。
  2. 查找并复制包含Id=SignUpOrSignIn 元素的内容。
  3. 打开 LocalAccounts/ TrustFrameworkExtensions.xml
  4. 查找 UserJourneys 元素。 如果没有元素,请添加一个。
  5. 将 UserJourney 元素粘贴为 UserJourneys 元素的子元素。
  6. 重命名用户旅程 ID (例如 Id=TransmitSUSI

步骤 6:将 Transmit 添加到用户旅程

将新的身份提供者添加到用户旅程中:

  1. 在用户旅程中,查找包含 Type=CombinedSignInAndSignUpType=ClaimsProviderSelection 的业务流程步骤元素。 通常这是第一个编排步骤。 ClaimsProviderSelections 元素具有用户登录时使用的标识提供者列表。 元素的顺序控制登录按钮的顺序。
  2. 添加ClaimsProviderSelection XML 元素。
  3. 将 TargetClaimsExchangeId 的值设置为易记名称。
  4. 添加 ClaimsExchange 元素。
  5. ID 设置为目标声明交换 ID 的值。
  6. 将 TechnicalProfileReferenceId 值更新为创建的技术配置文件 ID

以下 XML 演示了使用标识提供者的用户旅程业务流程:

    <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
      <ClaimsProviderSelections>
        ...
        <ClaimsProviderSelection TargetClaimsExchangeId="TSIDExchange" />
      </ClaimsProviderSelections>
      ...
    </OrchestrationStep>

    <OrchestrationStep Order="2" Type="ClaimsExchange">
      ...
      <ClaimsExchanges>
        <ClaimsExchange Id="TSIDExchange" TechnicalProfileReferenceId="TS-OpenIdConnect" />
      </ClaimsExchanges>
    </OrchestrationStep>

步骤 7:配置信赖方策略

信赖方策略(例如 SignUpSignIn.xml)指定 Azure AD B2C 执行的用户旅程。 在信赖方内查找 DefaultUserJourney 元素。 更新 ReferenceId,使其与已在其中添加标识提供者的用户旅程 ID 匹配

在以下示例中,对于 TransmitSUSI 用户旅程,将 ReferenceId 设置为 TransmitSUSI

  <RelyingParty>
    <DefaultUserJourney ReferenceId="TransmitSUSI" />
    <TechnicalProfile Id="TS-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>

步骤 8:上传自定义策略

使用您的 Azure AD B2C 租户关联的目录上传自定义策略。

  1. 登录到 Azure 门户
  2. 在门户工具栏中,选择 “目录 + 订阅”。
  3. 门户设置 |“目录 + 订阅 ”页,在 “目录名称 ”列表中,找到 Azure AD B2C 目录,然后选择“ 切换”。
  4. 在“策略”下,选择“Identity Experience Framework”
  5. 选择“ 上传自定义策略”,然后按以下顺序上传更新的文件:
  • 基本策略,例如 TrustFrameworkBase.xml
  • 本地化策略,例如 TrustFrameworkLocalization.xml
  • 扩展策略,例如 TrustFrameworkExtensions.xml
  • 信赖方策略,例如 SignUpOrSignIn.xml

步骤 9:测试自定义策略

将目录与 Azure AD B2C 租户配合使用,测试自定义策略:

  1. 在 Azure AD B2C 租户中,在 “策略”下,选择“ 标识体验框架”。
  2. “自定义策略”下,选择 B2C_1A_signup_signin
  3. 对于 应用程序,请选择已注册的 Web 应用程序。 回复 URLhttps://jwt.ms.
  4. 选择“立即运行”。
  5. 浏览器重定向到 Transmit 的登录页面。
  6. 完成登录流:输入帐户电子邮件并使用生物识别进行身份验证(例如指纹)。
  7. 浏览器使用 Azure AD B2C 令牌重定向到 https://jwt.ms

后续步骤

有关其他信息,请查看以下文章: