首页 > 解决方案 > One Login Open ID Connect 工作流程,如何启用 Duo Security MFA

问题描述

目前,我们有 Open ID Connect 身份验证工作流程,其中 One Login 工作得很好,并且能够通过自定义支架应用程序登录用户,而无需浏览器(自定义 UI)。现在需要通过 Duo Security 启用 MFA。我们在 One Login 方面启用了 Duo 安全身份验证因素,当用户通过浏览器登录时,它按预期工作 => 用户可以选择“Send me a Push”。现在我们需要以编程方式实现相同的工作流程:

  1. 我们遵循此处概述的示例工作流调用:https ://developers.onelogin.com/api-docs/2/multi-factor-authentication/overview

  2. 对于给定的 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

解决方案


为未来用户的利益添加答案:

  • 首先通过 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 中没有任何内容可以让我们在此时继续前进


推荐阅读