onelogin - One Login Open ID Connect 工作流程,如何启用 Duo Security MFA
问题描述
目前,我们有 Open ID Connect 身份验证工作流程,其中 One Login 工作得很好,并且能够通过自定义支架应用程序登录用户,而无需浏览器(自定义 UI)。现在需要通过 Duo Security 启用 MFA。我们在 One Login 方面启用了 Duo 安全身份验证因素,当用户通过浏览器登录时,它按预期工作 => 用户可以选择“Send me a Push”。现在我们需要以编程方式实现相同的工作流程:
我们遵循此处概述的示例工作流调用:https ://developers.onelogin.com/api-docs/2/multi-factor-authentication/overview
对于给定的 user_id,我们可以使用 API 版本 1 => https://{{api-domain}}/api/1/users/{{user_id}}/otp_devices 但不是版本 2 https 来检索已注册的身份验证因素列表: //api.us.onelogin.com/api/2/users?username=ashley.akua因为它返回空列表。v1 api 调用的响应示例:
"data": {
"otp_devices": [
{
"active": true,
"auth_factor_name": "Duo Duo Security",
"needs_trigger": false,
"type_display_name": "Duo Security",
"default": true,
"id": 11223344,
"user_display_name": "Duo Security"
}
]
},
"status": {
"message": "Success",
"error": false,
"type": "success",
"code": 200
}
}
现在我们要触发 Duo Security MFA 的推送通知:
鉴于“need_trigger”设置为 false,我们直接调用 verify,正文中没有 state_token 或 otp_token => https://api.us.onelogin.com}/api/1/users/999999/otp_devices/11223344/verify
我们得到以下信息:
{
"status": {
"message": "Failed authentication with this factor",
"error": true,
"type": "Unauthorized",
"code": 401
}
}
在这两个调用中,我都尝试过使用“管理所有”级别的 API 密钥
现在的问题是,如何从 Open ID Connect Password Grant 工作流程触发 Duo Security 推送通知?
解决方案
为未来用户的利益添加答案:
- 首先通过 OneLogin 或 AWS 的 API 使用 Duo,您需要在 Duo 管理面板上将 Duo 配置为 Duo API
- One Login 目前不支持 Duo Push 身份验证,仅支持 OTP,我不确定为什么会这样。通过创建会话令牌使用 OTP 和 state_token
- 为了回答主要问题,Open ID Connect 目前根本不支持 MFA,特别是 Password Grant => 在我们的用户案例中,我们没有可以使用的浏览器,因此 Password Grant 是唯一的选择。
我们目前正在评估替代方案,但 One Login API 中没有任何内容可以让我们在此时继续前进
推荐阅读
- r - 在列中的两个值之间填充行
- gmail-api - 主题状态
- java - 在带有 cassandra 和 java 的不良系统中使用 Apache Spark
- php - 我正在尝试使用 PHP 在我的数据库上创建一个表,到目前为止,我已经设法使用 PHP 创建了一个数据库,但未能创建表/表
- amazon-web-services - AWS Cloudformation 堆栈 - 主路由表
- html - 选择标签中未显示的具体化选项
- r - 在 R 中的 circlize 包中绘制图
- git - 如何在特定提交 git 后获取某些扩展的总行数
- swift - 如何在 swift 中为枚举添加更多案例
- css - 高度样式属性问题。