配置 Azure B2C AD 以使用 Authenticator 应用

Configuring Azure B2C AD to use Authenticator app

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

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

您应该通过 feedback.azure.com

中的 Azure AD B2C forum 请求

我被引导相信现在这是可能的。这是一个 link 到 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. Custom 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 自定义策略 (Henceforth B2C) 检查用户是否已经注册 (extension_StrongAuthenticationAppSecretKey 声明存在于 Azure Active Directory 身份存储的用户帐户中)。如果不存在,B2C 调用 REST API GenerateTOTP 端点为用户生成密钥和二维码。其余 API:

  1. 读取用户登录名
  2. 生成随机密钥
  3. 创建 TOTP URI(稍后查看 URI 格式)
  4. 为 TOTP URI 生成二维码
  5. Returns二维码位图,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后APIreturns将注册信息返回给Azure AD B2C。用户移动到用户旅程中指定的下一个编排步骤。此编排步骤读取 QR 码(base64 格式)并使用 JavaScript 将 QR 码呈现为用户可以扫描的图像。

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

此时,用户需要下载并安装身份验证器应用程序(Microsoft、Google,或任何其他身份验证器应用程序,例如 Authy 应用程序)。在Microsoft Authenticator中,点击添加账户,select账户类型,扫描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 代码验证

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

请按照以下link进行示例。 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