3

在 Azure B2C 中是否可以配置多重身份验证以使用 Microsoft Authenticator App?

4

3 回答 3

3

我被引导相信现在这是可能的。这是一个 Github 示例的链接,显示它可以使用“自定义策略”进行配置。

https://github.com/azure-ad-b2c/samples/tree/master/policies/custom-mfa-totp

万一它被取消,以下是截至2019-10 2020-12 的步骤:

Azure AD B2C:TOTP 多重身份验证

借助 Azure Active Directory (Azure AD) B2C,您可以集成基于 TOTP 的多重身份验证,以便您可以在面向消费者的应用程序中为注册和登录体验添加第二层安全性。这需要使用自定义策略和自定义 REST API 端点。如果您已经创建了注册和登录策略,您仍然可以启用多重身份验证。

Azure AD B2C TOTP 多重身份验证解决方案代码示例涉及以下组件:

  1. Azure AD B2C - 授权服务器,负责验证用户的身份、授予(和撤销)对资源的访问权限以及颁发令牌。它也被称为身份提供者。
  2. Web 或移动应用程序——也称为依赖方应用程序。依赖身份提供程序 (Azure AD B2C) 进行身份验证的应用程序。
  3. 自定义 Rest API - 借助作为 AD B2C 基础的身份体验框架,您可以在用户旅程中与 RESTful API 集成。添加您自己的业务逻辑。身份体验框架将数据发送到输入声明集合中的 RESTful 服务,并从输出声明集合中的 RESTful 接收数据。对 REST API 的调用由客户端证书保护。我们使用自定义 REST API 准备二维码,注册用户的安全码,并验证 TOTP 码。
  4. TOTP - 基于时间的一次性密码算法,它根据共享密钥(REST API 和身份验证器应用程序)和当前时间计算一次性密码。
  5. QR 码- 一种机器可读的光学标签,其中包含有关其所附物品的信息。在这种情况下,二维码包含 TOTP URI
  6. Authenticator 应用程序– Microsoft(或 Google)Authenticator 应用程序通过使用 TOTP(和其他方法)提供了额外的安全级别。

附加条件

1. 签到流程

下图描述了使用 MFA 注册和验证的登录流程。该解决方案基于 TOTP。TOTP 是基于时间的一次性密码,它提供临时密码,由在 REST API 服务中运行的算法生成。该算法使用密钥(由 REST API 生成并存储在 Azure AD B2C 目录存储中)与当前时间戳(确保每个密码都是唯一的)来生成密码(临时密码)。在注册和登录期间,用户向 Azure AD B2C 提供密码以完成登录过程。密钥在用户的身份验证器应用和 REST API(存储在 Azure AD B2C 目录存储中)之间共享,允许 REST API 验证密码。

2. 移动设备注册流程

在首次用户登录或首次需要 MFA 时(例如访问高度机密的数据),Azure AD B2C 自定义策略(以下简称 B2C)检查用户是否已注册(Azure Active Directory 中存在 extension_StrongAuthenticationAppSecretKey 声明身份存储的用户帐户)。如果不存在,B2C 调用 REST API GenerateTOTP 端点为用户生成密钥和二维码。REST API:

  1. 读取用户登录名
  2. 生成随机密钥
  3. 创建一个 TOTP URI(见后面的 URI 格式)
  4. 为 TOTP URI 生成 QR 码
  5. 返回二维码位图,采用 base64 共振峰和生成的密钥,采用 base64 格式

2.1 TOTP URI 生成

URI 包含以下数据,并且可能包含更多数据,例如 TOTP 时间(默认 30 秒)和大小(默认 6 位):

  • 协议- otpauth://totp
  • 用户名:B2CDemo:someone@contoso.com
  • 密钥:F4KRXSGXYBYT7BQ5THURPPH2RQ27JGSJ
  • 颁发者:Azure AD B2C 演示

以下是此类 URI 的示例:

otpauth://totp/B2CDemo%3asomeone%40contos.com?secret=F4KRXSGXYBYT7BQ5THURPPH2RQ27JGSJ&issuer=Azure%20AD%20B2C%20Demo

2.2 二维码扫描验证

在 REST API 将注册信息返回给 Azure AD B2C 之后。用户移动到用户旅程中指定的下一个编排步骤。此编排步骤读取 QR 码(base64 格式)并使用 JavaScript 将 QR 码呈现为用户可以扫描的图像。

2.3 将新的身份帐户添加到 Microsoft 身份验证器

此时,用户需要下载并安装身份验证器应用程序(Microsoft、Google 或任何其他身份验证器应用程序,例如 Authy 应用程序)。在Microsoft Authenticator中,点击添加账户,选择账户类型,扫描Azure AD B2C提供的二维码。

返回 Azure AD B2C,用户需要在 Azure AD B2C 中复制并键入密码(赢得 30 秒时间段),然后单击继续。

2.4 Azure AD B2C 验证 TOTP 代码

当用户点击继续,Azure AD B2C 调用 REST API VerifyTOTP 终结点。发送最终用户提供的代码、用户的密码和最后一次匹配的时间(此数据来自用户的 Azure AD 帐户)。我们使用最后一次匹配来防止和验证验证码是否已被使用。REST API 使用密钥和上次匹配时间验证最终用户提供的代码。如果代码无效,则会向最终用户显示一个用户友好的错误,要求再次提供 TOTP 验证码。注意:由于 TOTP 代码有效期为 30 秒,用户可以提供新值。Azure AD B2C 将再次调用验证终结点,直到用户提供有效值。在下一步中,Azure AD B2C 将用户的密钥和上次匹配存储在 Azure Active Directory 标识中

3. 登录和 MFA 验证

  1. Azure AD 检查用户是否已注册(extension_StrongAuthenticationAppSecretKey 声明存在)。如果存在,Azure AD B2C 要求用户输入验证码
  2. 最终用户需要打开身份验证应用程序并复制 TOTP 验证码,然后单击继续。
  3. 当用户单击继续时,Azure AD B2C 运行第 2.4 节 Azure AD B2C 的 TOTP 代码验证中描述的流程
于 2019-10-09T15:31:40.780 回答
0

目前,Azure AD B2C 不支持与 Microsoft Authenticator 应用集成

您应该通过feedback.azure.com 中的Azure AD B2C 论坛提出请求

于 2017-05-09T15:52:07.067 回答
0

目前只有 Azure“自定义策略”才能做到这一点。

请按照以下链接访问示例。 https://github.com/azure-ad-b2c/samples/tree/master/policies/custom-mfa-totp

如果您发现配置给定示例有任何困难,请按照以下文章进行操作。 https://medium.com/@snkaushi_9371/enable-totp-based-multi-factor-authentication-in-azure-ad-b2c-84e967d76aa4

于 2020-07-12T12:43:12.253 回答