你当前正在访问 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 产品可帮助组织应对机器人攻击、帐户接管和欺诈帐户漏洞。
先决条件
若要开始,需要:
- Azure 订阅
- 如果没有,可以获取一个 Azure 免费帐户
- 一个已关联到你的 Azure 订阅的 Azure AD B2C 租户
- 一个 Arkose Labs 帐户
- 转到 arkoselabs.com 以请求演示
方案描述
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 将状态发送到 Arkose Labs 以生成令牌。
- Arkose Labs 将令牌发送到 Azure AD B2C。
- Azure AD B2C 调用一个中间 Web API 来传递注册表单。
- 注册表单转到 Arkose Labs 进行令牌验证。
- Arkose Labs 将验证结果发送到中间 Web API。
- API 将成功或失败结果发送到 Azure AD B2C。
- 如果质询成功,注册表单将转到 Azure AD B2C 以完成身份验证。
向 Arkose Labs 请求演示
注意
公钥和私钥值为 ARKOSE_PUBLIC_KEY
和 ARKOSE_PRIVATE_KEY
。
请参阅 Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose。
与 Azure AD B2C 集成
创建 ArkoseSessionToken 自定义属性
若要创建自定义属性,请执行以下操作:
- 登录 Azure 门户,然后导航到 Azure AD B2C。
- 选择“用户属性”。
- 选择 添加 。
- 输入 ArkoseSessionToken 作为属性名称。
- 选择“创建” 。
了解详细信息:在 Azure Active Directory B2C 中定义自定义属性
创建用户流
用户流用于注册和登录,或用于注册。 在注册期间会显示 Arkose Labs 用户流。
在 Azure Active Directory B2C 中创建用户流和自定义策略。 如果使用用户流,请使用“建议”。
在用户流设置中,转到“用户属性”。
选择“ArkoseSessionToken”声明。
配置自定义 HTML、JavaScript 和页面布局
- 转到 Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose。
- 查找带有 JavaScript
<script>
标记的 HTML 模板。 这些模板执行三项操作:
加载 Arkose Labs 脚本,该脚本呈现其小组件并执行客户端 Arkose Labs 验证。
隐藏对应于
ArkoseSessionToken
自定义属性的extension_ArkoseSessionToken
输入元素和标签。当用户完成 Arkose Labs 质询时,将验证用户响应并生成令牌。 自定义 JavaScript 中的回调
arkoseCallback
将extension_ArkoseSessionToken
值设置为生成的令牌值。 此值将提交到 API 终结点。注意
转到 developer.arkoselabs.com 以获取客户端说明。 遵循步骤对用户流使用自定义 HTML 和 JavaScript。
在 Azure-Samples 中修改 selfAsserted.html 文件,使
<ARKOSE_PUBLIC_KEY>
与你为客户端验证生成的值匹配。将 HTML 页面托管在已启用跨源资源共享 (CORS) 的 Web 终结点上。
-
注意
如果你有自定义 HTML,请将
<script>
元素复制并粘贴到 HTML 页面上。 在 Azure 门户中转到“Azure AD B2C”。
导航到“用户流”。
选择你的用户流。
选择“页面布局”。
选择“本地帐户注册页面布局”。
对于“使用自定义页面内容”,请选择“是”。
在“使用自定义页面内容”中,粘贴你的自定义 HTML URI。
(可选)如果你使用社交标识提供者,请重复“社交帐户注册页面”的步骤。
在用户流中,转到“属性”。
选择“启用 JavaScript”。
了解详细信息:在 Azure Active Directory B2C 中启用 JavaScript 和页面布局版本
创建并部署 API
本部分假设你使用 Visual Studio Code 部署 Azure Functions。 可以使用 Azure 门户、终端或命令提示符进行部署。
转到 Visual Studio Marketplace 以安装适用于 Visual Studio Code 的 Azure Functions。
在本地运行 API
- 在 Visual Studio Code 的左侧导航栏中,转到 Azure 扩展。
- 为本地 Azure Function 选择“本地项目”文件夹。
- 按 F5 或选择“调试”>“开始调试”。 此命令使用 Azure Function 创建的调试配置。
- 如果需要,Azure Function 会生成用于本地开发的文件,并安装依赖项和 Function Core 工具。
- Function Core 工具的输出显示在 Visual Studio Code 的“终端”面板中。
- 当主机启动时,在按住 Alt 的同时单击输出中的本地 URL。
- 浏览器将打开并运行函数。
- 在 Azure Functions 资源管理器中,右键单击该函数以查看本地托管函数的 URL。
添加环境变量
本部分中的示例在使用 HTTP 基本身份验证时保护 Web API 终结点。 在 Internet 工程任务组页面 RFC 7617:基本身份验证上了解详细信息。
用户名和密码以环境变量的形式存储,而不是存储为存储库的一部分。 在在本地对 Azure Functions 进行编码和测试,本地设置文件中了解详细信息。
- 在根文件夹中创建 local.settings.json 文件。
- 将以下代码复制并粘贴到该文件中:
{
"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>"
}
}
- BASIC_AUTH_USERNAME 和 BASIC_AUTH_PASSWORD 是用于对 Azure Function 的 API 调用进行身份验证的凭据。 选择值。
-
<ARKOSE_PRIVATE_KEY> 是在 Arkose Labs 平台中生成的服务器端机密。
- 它调用 Arkose Labs 服务器端验证 API 来验证前端生成的
ArkoseSessionToken
值。 - 请参阅服务器端说明。
- 它调用 Arkose Labs 服务器端验证 API 来验证前端生成的
- <B2C_EXTENSIONS_APP_ID> 是 Azure AD B2C 在目录中存储自定义属性所用的应用程序 ID。
导航到“应用注册”。
搜索“b2c-extensions-app”。
在“概述”页中,复制“应用程序(客户端) ID”。
删除
-
字符。
将应用程序部署到 Web
将 Azure Function 部署到云。 在 Azure Functions文档中了解详细信息。
复制 Azure Functions 的终结点 Web URL。
部署后,选择“上传设置”选项。
环境变量将上传到应用服务的应用程序设置。 在 Azure 中的应用程序设置中了解详细信息。
配置并启用 API 连接器
创建 API 连接器。 请参阅将 API 连接器添加到注册用户流。
为用户流启用该连接器。
- 终结点 URL - 在部署 Azure Function 时复制的函数 URL
- 用户名 - 你定义的用户名
- 密码 - 你定义的密码
在用户流的“API 连接器”设置中,选择要在执行“创建用户之前”步骤时调用的 API 连接器。
该 API 将验证
ArkoseSessionToken
值。
测试用户流
- 打开 Azure AD B2C 租户。
- 在“策略”下,选择“用户流” 。
- 选择创建的用户流。
- 选择“运行用户流”。
- 对于“应用程序”,请选择已注册的应用(示例为 JWT)。
- 对于“回复 URL”,请选择重定向 URL。
- 选择“运行用户流”。
- 执行注册流。
- 创建帐户。
- 注销。
- 执行登录流。
- 选择“继续”。
- 此时会显示 Arkose Labs 提问。