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

教程:配置使用 Arkose Labs 平台的 Azure Active Directory B2C

本教程介绍如何将 Azure Active Directory B2C (Azure AD B2C) 身份验证与 Arkose Labs Arkose Protect Platform 相集成。 Arkose Labs 产品可帮助组织应对机器人攻击、帐户接管和欺诈帐户漏洞。

先决条件

若要开始,需要:

方案描述

Arkose Labs 产品集成包括以下组件:

  • Arkose Protect Platform - 用于防范机器人和其他自动式滥用的服务
  • Azure AD B2C 注册用户流 - 使用 Arkose Labs 平台的注册体验
    • 自定义 HTML、JavaScript 和 API 连接器与 Arkose 平台集成
  • Azure Functions - 托管的 API 终结点,使用 API 连接器功能
    • 此 API 对 Arkose Labs 会话令牌的服务器端进行验证
    • Azure Functions 概述中了解详细信息

下图演示了 Arkose Labs 平台如何与 Azure AD B2C 集成。

Arkose Labs 平台和 Azure AD B2C 集成体系结构的示意图。

  1. 用户注册并创建帐户。 用户选择“提交”,此时会出现 Arkose Labs 强制质询。
  2. 用户完成质询。 Azure AD B2C 将状态发送到 Arkose Labs 以生成令牌。
  3. Arkose Labs 将令牌发送到 Azure AD B2C。
  4. Azure AD B2C 调用一个中间 Web API 来传递注册表单。
  5. 注册表单转到 Arkose Labs 进行令牌验证。
  6. Arkose Labs 将验证结果发送到中间 Web API。
  7. API 将成功或失败结果发送到 Azure AD B2C。
  8. 如果质询成功,注册表单将转到 Azure AD B2C 以完成身份验证。

向 Arkose Labs 请求演示

  1. 转到 arkoselabs.com 以预订演示
  2. 创建帐户。
  3. 导航到 Arkose 门户登录页。
  4. 在仪表板中,导航到站点设置。
  5. 找到你的公钥和私钥。 稍后将使用此信息。

注意

公钥和私钥值为 ARKOSE_PUBLIC_KEYARKOSE_PRIVATE_KEY。 请参阅 Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose

与 Azure AD B2C 集成

创建 ArkoseSessionToken 自定义属性

若要创建自定义属性,请执行以下操作:

  1. 登录 Azure 门户,然后导航到 Azure AD B2C
  2. 选择“用户属性”。
  3. 选择 添加
  4. 输入 ArkoseSessionToken 作为属性名称。
  5. 选择“创建” 。

了解详细信息:在 Azure Active Directory B2C 中定义自定义属性

创建用户流

用户流用于注册和登录,或用于注册。 在注册期间会显示 Arkose Labs 用户流。

  1. 在 Azure Active Directory B2C 中创建用户流和自定义策略。 如果使用用户流,请使用“建议”。

  2. 在用户流设置中,转到“用户属性”。

  3. 选择“ArkoseSessionToken”声明。

    “用户属性”下的 ArkoseSessionToken 的屏幕截图。

配置自定义 HTML、JavaScript 和页面布局

  1. 转到 Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose
  2. 查找带有 JavaScript <script> 标记的 HTML 模板。 这些模板执行三项操作:
  • 加载 Arkose Labs 脚本,该脚本呈现其小组件并执行客户端 Arkose Labs 验证。

  • 隐藏对应于 ArkoseSessionToken 自定义属性的 extension_ArkoseSessionToken 输入元素和标签。

  • 当用户完成 Arkose Labs 质询时,将验证用户响应并生成令牌。 自定义 JavaScript 中的回调 arkoseCallbackextension_ArkoseSessionToken 值设置为生成的令牌值。 此值将提交到 API 终结点。

    注意

    转到 developer.arkoselabs.com 以获取客户端说明。 遵循步骤对用户流使用自定义 HTML 和 JavaScript。

  1. 在 Azure-Samples 中修改 selfAsserted.html 文件,使 <ARKOSE_PUBLIC_KEY> 与你为客户端验证生成的值匹配。

  2. 将 HTML 页面托管在已启用跨源资源共享 (CORS) 的 Web 终结点上。

  3. 创建存储帐户

  4. Azure 存储的 CORS 支持

    注意

    如果你有自定义 HTML,请将 <script> 元素复制并粘贴到 HTML 页面上。

  5. 在 Azure 门户中转到“Azure AD B2C”。

  6. 导航到“用户流”。

  7. 选择你的用户流。

  8. 选择“页面布局”。

  9. 选择“本地帐户注册页面布局”。

  10. 对于“使用自定义页面内容”,请选择“是”。

  11. 在“使用自定义页面内容”中,粘贴你的自定义 HTML URI。

  12. (可选)如果你使用社交标识提供者,请重复“社交帐户注册页面”的步骤。

    一个屏幕截图,其中显示了“页面布局”下的“布局名称”选项和“社交帐户注册页面”选项。

  13. 在用户流中,转到“属性”。

  14. 选择“启用 JavaScript”。

了解详细信息:在 Azure Active Directory B2C 中启用 JavaScript 和页面布局版本

创建并部署 API

本部分假设你使用 Visual Studio Code 部署 Azure Functions。 可以使用 Azure 门户、终端或命令提示符进行部署。

转到 Visual Studio Marketplace 以安装适用于 Visual Studio Code 的 Azure Functions

在本地运行 API

  1. 在 Visual Studio Code 的左侧导航栏中,转到 Azure 扩展。
  2. 为本地 Azure Function 选择“本地项目”文件夹。
  3. 按 F5 或选择“调试”>“开始调试”。 此命令使用 Azure Function 创建的调试配置。
  4. 如果需要,Azure Function 会生成用于本地开发的文件,并安装依赖项和 Function Core 工具。
  5. Function Core 工具的输出显示在 Visual Studio Code 的“终端”面板中。
  6. 当主机启动时,在按住 Alt 的同时单击输出中的本地 URL。
  7. 浏览器将打开并运行函数。
  8. 在 Azure Functions 资源管理器中,右键单击该函数以查看本地托管函数的 URL。

添加环境变量

本部分中的示例在使用 HTTP 基本身份验证时保护 Web API 终结点。 在 Internet 工程任务组页面 RFC 7617:基本身份验证上了解详细信息。

用户名和密码以环境变量的形式存储,而不是存储为存储库的一部分。 在在本地对 Azure Functions 进行编码和测试,本地设置文件中了解详细信息。

  1. 在根文件夹中创建 local.settings.json 文件。
  2. 将以下代码复制并粘贴到该文件中:
{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "node",
    "BASIC_AUTH_USERNAME": "<USERNAME>",
    "BASIC_AUTH_PASSWORD": "<PASSWORD>",
    "ARKOSE_PRIVATE_KEY": "<ARKOSE_PRIVATE_KEY>",
    "B2C_EXTENSIONS_APP_ID": "<B2C_EXTENSIONS_APP_ID>"
  }
}
  1. BASIC_AUTH_USERNAME 和 BASIC_AUTH_PASSWORD 是用于对 Azure Function 的 API 调用进行身份验证的凭据。 选择值。
  • <ARKOSE_PRIVATE_KEY> 是在 Arkose Labs 平台中生成的服务器端机密。
    • 它调用 Arkose Labs 服务器端验证 API 来验证前端生成的 ArkoseSessionToken 值。
    • 请参阅服务器端说明
  • <B2C_EXTENSIONS_APP_ID> 是 Azure AD B2C 在目录中存储自定义属性所用的应用程序 ID。
  1. 导航到“应用注册”。

  2. 搜索“b2c-extensions-app”。

  3. 在“概述”页中,复制“应用程序(客户端) ID”。

  4. 删除 - 字符。

    “应用注册”下的显示名称、应用程序 ID 和创建日期的屏幕截图。

将应用程序部署到 Web

  1. 将 Azure Function 部署到云。 在 Azure Functions文档中了解详细信息。

  2. 复制 Azure Functions 的终结点 Web URL。

  3. 部署后,选择“上传设置”选项。

  4. 环境变量将上传到应用服务的应用程序设置。 在 Azure 中的应用程序设置中了解详细信息。

    注意

    你可以管理函数应用。 另请参阅部署项目文件,以了解 Azure Functions 的 Visual Studio Code 开发。

配置并启用 API 连接器

  1. 创建 API 连接器。 请参阅将 API 连接器添加到注册用户流

  2. 为用户流启用该连接器。

    “配置 API 连接器”中的“显示名称”、“终结点 URL”、“用户名”和“密码”的屏幕截图。

  • 终结点 URL - 在部署 Azure Function 时复制的函数 URL
  • 用户名 - 你定义的用户名
  • 密码 - 你定义的密码
  1. 在用户流的“API 连接器”设置中,选择要在执行“创建用户之前”步骤时调用的 API 连接器。

  2. 该 API 将验证 ArkoseSessionToken 值。

    API 连接器下的“创建用户之前”条目的屏幕截图。

测试用户流

  1. 打开 Azure AD B2C 租户。
  2. 在“策略”下,选择“用户流” 。
  3. 选择创建的用户流。
  4. 选择“运行用户流”。
  5. 对于“应用程序”,请选择已注册的应用(示例为 JWT)。
  6. 对于“回复 URL”,请选择重定向 URL。
  7. 选择“运行用户流”。
  8. 执行注册流。
  9. 创建帐户。
  10. 注销。
  11. 执行登录流。
  12. 选择“继续”。
  13. 此时会显示 Arkose Labs 提问。

资源