用于端到端外部 MFA 集成的关键组件和信息
在启用或设计新的外部 MFA 集成时,必须考虑并定义 IBM® Verify 中的两个关键组件。
- MFA 提供程序
- 用于表示外部 MFA 提供程序集成的 Verify 公共投影的配置。 在运行时,此组件将充当 API 客户机。 请求和响应是通过实时 webhook 发送的。
- 实时 webhook
- 将安全认证的互联网连接和 HTTPS 客户机提供给目标外部 MFA 提供程序。 将 Webhook 指定为 API 合同实施点。 此 Webhook 对 Verify 的内部组件与目标外部 MFA 提供程序之间发送的请求和响应进行调解。
MFA 提供程序信息
Verify MFA 提供程序表示 Verify 外部 MFA 提供程序的概念化。 它定义显示哪些 MFA 因子功能,以及如何在目标 MFA 提供程序中识别和解析 Verify 用户。 以下示例中显示 MFA 提供程序配置。
{
"name": "The Provider Name",
"description": "ISV - External Provider Integration",
"enabled": true,
"credentialPrefix": "emfa",
"webhookId": "{{webhook.id}}",
"uniqueNameAttribute": "{{unique.name.attribute}}",
"capabilities": [
"mobile_otp",
"mobile_bio",
"custom_totp"
]
}下表显示密钥配置属性。
| 配置属性 | 描述 |
|---|---|
name |
Verify 中已知的 MFA 提供程序的简短友好名称。 |
description |
提供程序的简要描述。 |
enabled |
指示是否在运行时启用提供程序。 如果为 'true',那么将认为该提供程序可用于 MFA 质询。 |
credentialPrefix |
添加到每个因子功能并由访问策略评估人员引用的简短前缀。 此值在 Verify 租户内的所有已配置 MFA 提供程序中必须唯一。 在 Verify 中,外部 MFA 因子标识为 {credentialPrefix}:{capability}。注意: 此值中不得包含冒号 (: .:)。 |
webhookId |
与多因素身份验证 (MFA) 提供商关联的、作为实时 Webhook 配置实例后端的基础 Verify 配置 UUID。 |
uniqueNameAttribute |
这是在 Verify 租户中配置的 Verify 标准属性或定制属性的名称。 此属性提供从已认证 Verify 用户到外部 MFA 提供程序用户的映射。 该值用于查找特定用户及其在目标 MFA 提供程序中的 MFA 注册和功能。 |
| capabilities | 要在 Verify 中展示并由外部 MFA 提供程序支持的一个或多个 MFA 因子功能的列表。 值为字符串,可以包含任何有效的字符串。 一个功能的运行时行为必须可映射至注册查找模式和其他一个运行时质询模式。 |
Webhook 信息
实时 Webhook 配置必须与 MFA 提供商配置相关联。 实时 Webhook 实现了 ISV 与目标 MFA 提供商服务之间的技术运行时集成。 理想情况下,Webhook 也是强制实施外部 MFA 合同的点,因此充当 ISV 与目标 MFA 提供者之间的 API 和协议介体。 Webhook 支持强制实施 API 合同和调解功能的关键机制是“资源”和“变换”。 对于外部 MFA 支持和集成,“资源”的定义必须与 ISV 外部 MFA API 合同相匹配。
以下示例代码展示了一个实时 webhook,它能够支持上一节中的示例 MFA 提供商。
{
"name": "Some MFA Provider",
"type": "realtime",
"urls": ["https://some.address.com"],
"authentication": {
"type": "oauth",
"oauth": {
"client_id": "some_client_id",
"client_secret": "some_client_secret",
"token_endpoint": "https://some.address.com/token",
"token_endpoint_auth_method": "client_secret_basic"
}
},
"resources": {
"enrollments": {
"suffix": "/v1/enrollments",
"method": "GET",
"transform": {
"outgoing": (CEL TRANSFORM),
"incoming": (CEL TRANSFORM)
}
},
"initiate": {
"suffix": "/v1/mfa",
"method": "POST",
"expectedStatus": [201]
"transform": {
"outgoing": (CEL TRANSFORM),
"incoming": (CEL TRANSFORM)
}
},
"validate": {
"suffix": "/v1/mfa",
"method": "POST",
"transform": {
"outgoing": (CEL TRANSFORM),
"incoming": (CEL TRANSFORM)
}
},
"custom_totp_1": {
"suffix": "/v1/mfa",
"method": "POST",
"transform": {
"outgoing": (CEL TRANSFORM),
"incoming": (CEL TRANSFORM)
}
},
"result": {
"suffix": "/v1/mfa/transactions",
"method": "GET",
"transform": {
"outgoing": (CEL TRANSFORM),
"incoming": (CEL TRANSFORM)
}
}
},
"purpose": ["external_mfa"]
}下表描述与资源相关联的可配置属性。
请参阅 Webhook 配置 API 参考。
| 属性 | 描述 |
|---|---|
suffix |
可选。 要添加到出站请求中使用的基本 URL 的后缀。 来自 Webhook 资源的出站请求将定向到 base URL + suffix。 在配置中定义的范围之外未添加任何斜杠。 可以通过使用传出变换来修改传出请求 URL。 例如,在先前的 enrollments 样本中,ISV Webhook 组件会启动目标 MFA 提供程序的 API 端点 https://some.address.com/v1/enrollments。 |
method |
可选。 用于将传出 HTTP 方法从 POST 修改为指定的任何内容的方法。 用于启动 API 端点的 HTTP 方法。 有效值为 POST、PUT、GET、DELETE 和 PATCH。方法可使用出局变换来进行修改。 |
transform.outgoing |
可选。 定义在发送出站请求之前应用于它们的数据转换。 变换有权访问从 ISV 内部 MFA 框架发送的以下请求元素:body、headers、http
method、path 和 host。 |
transform.incoming |
可选。 定义在返回 ISV MFA 框架之前应用于传入响应的数据变换。 变换可访问从 ISV 内部 MFA 框架发送的以下请求元素:body、headers、status_code、request(产生当前响应的原始请求)。 |
exepctedStatus |
可选。 这是由该 webhook 触发的 API 所期望的 HTTP 状态码。 如果该属性不存在,则需要 200 - 299 范围内的状态代码。 运行传入变换之前检查预期状态。 请参阅 HTTP Status。 |
外部 MFA 提供商可根据其对外部请求的处理结果返回以下响应。
下表总结了设计 Webhook 资源以支持外部 MFA 集成的注意事项。 资源设计受支持的 MFA 集成模式的需求驱动。| 响应 | 定义 |
|---|---|
| 暂挂 | 身份验证尚未完成。 |
| 成功 | 身份验证成功。 |
| 失败 | 身份验证失败。 |
| 已取消 | 身份验证未完成,因为某个实体取消了该操作。 |
| TIMEOUT | 由于超时,身份验证未完成。 |
| Webhook 资源 | 模式 | 描述 |
|---|---|---|
enrollments |
注册查找 | 此资源由 ISV 内部 MFA 客户端在响应查找特定用户的 MFA 注册和功能的请求时启动。 当 ISV 向用户提供 MFA 因子选项的选择作为运行时 MFA 质询的一部分时,通常需要此资源。 |
{{mfa_capability_name}}_1 |
initiate - sms 和 otp或者
|
MFA 因子的名称与 {{mfa_capability_name}} 属性匹配时,此资源将作为 ISV MFA 客户机首选项启动。如果功能模式为 |
{{mfa_capability_name}}_2 |
initiate + validate - sms 和 otp |
MFA 因子的名称与 {{mfa_capability_name}} 属性匹配时,此资源将作为 ISV MFA 客户机首选项启动。 它用来验证 MFA 质询。 |
initiate |
initiate + validate - sms 和 otp或者 initiate + wait for
completion - 移动推送 |
如果未定义任何特定于因子功能的资源,那么此资源用于启动 MFA 质询。 |
validate |
initiate - sms 和 otp |
如果未定义任何特定于因子功能的资源,那么此资源用于验证 MFA 质询。 |
result |
initiate + wait for completion - 移动推送 |
此资源用于在质询开始后轮询 MFA 质询完成情况。 通常要求较早的启动响应返回事务标识符、其他一些状态数据或句柄。 |