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

教程:使用 BlokSec 配置 Azure Active Directory B2C 进行无密码身份验证

重要

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

在您开始之前

Azure Active Directory B2C 有两种方法来定义用户与应用程序的交互:预定义的用户流或可配置的自定义策略。

注释

在 Azure Active Directory B2C 中,自定义策略主要解决复杂的方案。 对于大多数方案,我们建议使用内置用户流。
请参阅用户 流和自定义策略概述

Azure AD B2C 和 BlokSec

了解如何将 Azure Active Directory B2C (Azure AD B2C) 身份验证与 BlokSec 分散标识路由器集成。 BlokSec 解决方案简化了用户使用无密码身份验证和无令牌多重身份验证进行登录。 该解决方案可保护客户免受与标识相关的攻击,例如密码填充、网络钓鱼和中间人。

若要了解详细信息,请转到 bloksec.com: BlokSec Technologies Inc.

方案说明

BlokSec 集成包括以下组件:

  • Azure AD B2C – B2C 应用程序的授权服务器和标识提供者(IdP)
  • BlokSec 分散标识路由器 – 应用 BlokSec DIaaS 的服务网关,用于将身份验证和授权请求路由到用户个人标识提供者(PIdP)应用程序
    • 它是 Azure AD B2C 中的 OpenID Connect (OIDC) 标识提供者
  • BlokSec 基于 SDK 的移动应用 - 分散式身份验证方案中的用户 PIdP
    • 如果不使用 BlokSec SDK,请前往免费 Google Play 获取BlokSec yuID

以下体系结构图说明了 BlokSec 解决方案实现中的注册、登录流。

BlokSec 解决方案实现中的注册、登录流示意图。

  1. 用户登录到 Azure AD B2C 应用程序,并转发到 Azure AD B2C 登录和注册策略
  2. Azure AD B2C 使用 OIDC 授权代码流将用户重定向到 BlokSec 分散标识路由器。
  3. BlokSec 路由器使用身份验证和授权请求详细信息向用户移动应用发送推送通知。
  4. 用户查看身份验证质询。 系统会提示接受的用户进行生物测量,例如指纹或面部扫描。
  5. 响应使用用户的唯一数字密钥进行数字签名。 身份验证响应提供拥有、存在和同意证明。 响应将返回到路由器。
  6. 路由器根据存储在分布式账本中的用户不可变唯一公钥验证数字签名。 路由器将身份验证结果回复给 Azure AD B2C。
  7. 授予或拒绝用户访问权限。

启用 BlokSec

  1. 转到 bloksec.com 并选择“请求演示”租户
  2. 在消息字段中,指示要与 Azure AD B2C 集成。
  3. 下载并安装免费的 BlokSec yuID 移动应用。
  4. 演示租户准备好后,会收到一封电子邮件。
  5. 在具有 BlokSec 应用程序的移动设备上,选择用于向 yuID 应用注册管理员帐户的链接。

先决条件

若要开始,需要:

另请参阅 教程:在 Azure AD B2C 中创建用户流和自定义策略

在 BlokSec 中创建应用程序注册

在 BlokSec 的帐户注册电子邮件中,找到 BlokSec 管理控制台的链接。

  1. 登录到 BlokSec 管理控制台。
  2. 在主仪表板上,选择“ 添加应用程序 > 创建自定义”。
  3. 对于 “名称”,请输入 Azure AD B2C 或应用程序名称。
  4. 对于 SSO 类型,请选择 OIDC
  5. 对于 徽标 URI,请输入徽标图像的链接。
  6. 对于 重定向 URI,请使用 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
  7. 对于“注销后重定向 URI”,请输入 https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/{policy}/oauth2/v2.0/logout
  8. 选择创建的 Azure AD B2C 应用程序以打开应用程序配置。
  9. 选择“ 生成应用机密”。

了解详细信息: 发送注销请求

注释

要配置 Azure AD B2C 中的标识提供者(IdP),您需要应用程序 ID 和应用程序密钥。

在 Azure AD B2C 中添加新的标识提供者

使用包含你的 Azure AD B2C 租户的目录来执行以下说明。

  1. 至少以 Azure AD B2C 租户的 B2C IEF 策略管理员身份登录到 Azure 门户
  2. 在门户工具栏中,选择 “目录 + 订阅”。
  3. 门户设置“目录 + 订阅 ”页上的 “目录名称 ”列表中,找到 Azure AD B2C 目录。
  4. 选择“ 切换”。
  5. 在 Azure 门户的左上角,选择 “所有服务”。
  6. 搜索并选择“Azure AD B2C”
  7. 导航到“仪表板”“Azure Active Directory B2C”>“标识提供者”>
  8. 选择 「新建 OpenID Connect 提供程序」
  9. 选择 并添加

配置标识提供者

  1. 选择 标识提供者类型 > OpenID Connect
  2. 对于 名称,请输入 BlokSec yuID 无密码 或其他名称。
  3. 对于 元数据 URL,请输入 https://api.bloksec.io/oidc/.well-known/openid-configuration
  4. 对于 客户端 IDV,输入 BlokSec 管理员 UI 中的应用程序 ID。
  5. 对于 客户端密码,请从 BlokSec 管理员 UI 输入应用程序机密。
  6. 对于“范围”,请选择“OpenID 电子邮件配置文件”
  7. 对于 响应类型,请选择 “代码”。
  8. 对于“域提示”,请选择“yuID”
  9. 选择“确定”
  10. 选择“映射此标识提供者的声明”
  11. 对于 用户 ID,请选择
  12. 对于 显示名称,请选择 名称
  13. 对于 给定名称,请使用 given_name
  14. 对于 姓氏,请使用 family_name
  15. 对于 电子邮件,请使用 电子邮件
  16. 选择“保存”

用户注册

  1. 使用提供的凭据登录到 BlokSec 管理控制台。
  2. 导航到之前创建的 Azure AD B2C 应用程序。
  3. 在右上角,选择 齿轮 图标。
  4. 选择 创建账户
  5. “创建帐户”中,输入用户信息。 记下帐户名称。
  6. 选择提交

用户在提供的电子邮件地址处收到帐户注册电子邮件。 指示用户使用 BlokSec yuID 应用选择移动设备上的注册链接。

创建用户流策略

对于以下说明,请确保 BlokSec 是新的 OIDC 标识提供者 (IdP)。

  1. 在 Azure AD B2C 租户的 “策略”下,选择 “用户流”。
  2. 选择“新建用户流”。
  3. 选择“注册和登录”“版本”>“创建”>
  4. 输入策略 名称
  5. 在“标识提供者”部分中,选择创建的 BlokSec 标识提供者。
  6. 对于“本地帐户”,请选择“ ”。 此作禁用电子邮件和基于密码的身份验证。
  7. 选择“运行用户流”
  8. 在窗体中,输入回复 URL,例如 https://jwt.ms
  9. 浏览器将重定向到 BlokSec 登录页。
  10. 输入用户注册中的帐户名称。
  11. 用户使用 BlokSec yuID 应用程序在移动设备上收到推送通知。
  12. 用户打开通知,并显示身份验证质询。
  13. 如果接受身份验证,浏览器会将用户重定向到回复 URL。

注释

在 Azure Active Directory B2C 中,自定义策略主要解决复杂的方案。 对于大多数方案,我们建议使用内置用户流。
请参阅用户 流和自定义策略概述

创建策略密钥

存储 Azure AD B2C 租户中记录的客户端密码。 对于以下说明,请使用包含你的 Azure AD B2C 租户的目录。

  1. 登录到 Azure 门户
  2. 在门户工具栏中,选择 “目录 + 订阅”。
  3. 门户设置“目录 + 订阅 ”页上的 “目录名称 ”列表中,找到 Azure AD B2C 目录。
  4. 选择“ 切换”。
  5. 在 Azure 门户的左上角,选择“所有服务
  6. 搜索并选择“Azure AD B2C”
  7. 在“概述”页上,选择“Identity Experience Framework”
  8. 选择 策略密钥
  9. 选择 并添加
  10. 对于“选项”,选择“手动”
  11. 为策略密钥输入一个策略名称。 例如,BlokSecAppSecretB2C_1A_前缀将添加到密钥名称。
  12. “机密”中,输入所记录的客户端密码。
  13. 对于“密钥用法”,请选择“签名”
  14. 选择 创建

将 BlokSec 配置为标识提供者

若要允许用户使用 BlokSec 分散标识登录,请将 BlokSec 定义为声明提供程序。 此操作可确保 Azure AD B2C 通过终结点与它进行通信。 Azure AD B2C 使用终端声明来验证用户通过生物识别(例如指纹或面部扫描)对身份进行认证。

若要将 BlokSec 定义为声明提供程序,请将其添加到策略扩展文件中的 ClaimsProvider 元素。

  1. 打开 TrustFrameworkExtensions.xml

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

  3. 若要添加新的 ClaimsProvider,请使用以下代码

    <ClaimsProvider>
      <Domain>bloksec</Domain>
      <DisplayName>BlokSec</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="BlokSec-OpenIdConnect">
          <DisplayName>BlokSec</DisplayName>
          <Description>Login with your BlokSec decentriled identity</Description>
          <Protocol Name="OpenIdConnect" />
          <Metadata>
            <Item Key="METADATA">https://api.bloksec.io/oidc/.well-known/openid-configuration</Item>
            <!-- Update the Client ID below to the BlokSec Application ID -->
            <Item Key="client_id">00001111-aaaa-2222-bbbb-3333cccc4444</Item>
            <Item Key="response_types">code</Item>
            <Item Key="scope">openid profile email</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
            <Item Key="DiscoverMetadataByTokenIssuer">true</Item>
            <Item Key="ValidTokenIssuerPrefixes">https://api.bloksec.io/oidc</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_BlokSecAppSecret" />
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
            <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. 将client_id设置为应用程序注册中的应用程序 ID。

  5. 选择“保存”

添加用户旅程

如果设置了标识提供者,但它未显示在任何登录页中,请按照以下说明操作。 如果没有自定义用户旅程,请复制模板用户旅程。

  1. 在入门包中,打开 TrustFrameworkBase.xml 文件。
  2. 查找并复制包含 ID=SignUpOrSignIn 元素的内容。
  3. 打开 TrustFrameworkExtensions.xml
  4. 查找 UserJourneys 元素。 如果未显示该元素,请添加一个。
  5. 粘贴您复制的 UserJourney 元素的内容,将其作为 UserJourneys 元素的子元素。
  6. 重命名用户旅程 ID。 例如,ID=CustomSignUpSignIn

将标识提供者添加到用户旅程

如果你有用户旅程,请将新的标识提供者添加到其中。 首先添加一个登录按钮,然后将其链接到某个操作,即创建的技术配置文件。

  1. 在用户旅程中,找到包含 Type=CombinedSignInAndSignUp 或 Type=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="BlokSecExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

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

配置信赖方策略

信赖方策略(例如 SignUpSignIn.xml)指定 Azure AD B2C 执行的用户旅程。

  1. 在信赖方中找到 DefaultUserJourney 元素
  2. 更新 ReferenceId,使其与已在其中添加标识提供者的用户旅程 ID 匹配

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

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

上传自定义策略

对于以下说明,请使用包含你的 Azure AD B2C 租户的目录。

  1. 登录到 Azure 门户
  2. 在门户工具栏中,选择 “目录 + 订阅”。
  3. 门户设置“目录 + 订阅 ”页上的 “目录名称 ”列表中,找到 Azure AD B2C 目录
  4. 选择“ 切换”。
  5. 在 Azure 门户中,搜索并选择 Azure AD B2C
  6. 在“策略”下,选择“Identity Experience Framework”
  7. 选择“ 上传自定义策略”。
  8. 按以下顺序上传更改的两个策略文件:
  • 扩展策略,例如 TrustFrameworkExtensions.xml
  • 信赖方策略,例如 SignUpSignIn.xml

测试自定义策略

  1. 选择依赖方策略,例如 B2C_1A_signup_signin
  2. 对于 应用程序,请选择已注册的 Web 应用程序。
  3. 回复 URL 显示为 https://jwt.ms
  4. 选择“立即运行”。
  5. 在注册或登录页中,选择 Google 以使用 Google 帐户登录。
  6. 浏览器将重定向到 https://jwt.ms。 请参阅 Azure AD B2C 返回的令牌内容。

了解详细信息 :教程:在 Azure Active Directory B2C 中注册 Web 应用程序

后续步骤