Okta API:SMS多因素问题

时间:2016-03-03 22:26:41

标签: api okta okta-api multi-factor

我正在尝试在Web应用程序中使用Okta API,以允许用户激活/停用其帐户上的SMS MFA因子。但是,我遇到了一个问题,详情如下:

首先,在新创建的帐户上:

  1. 通过Enroll Okta SMS Factor API方法注册了SMS因子。
  2. 此因素随后通过Acivate SMS Factor API激活 方法
  3. 然后我们使用Reset Factor API停用因子 方法
  4. 但是,所有这一切都运行良好且没有错误,现在再次尝试注册SMS因素时:

    • 如果使用相同的电话号码:将不会发送安全码和短信 无需验证即可启用双因素身份验证(此功能 没关系,但意想不到)
    • 如果使用其他电话号码:Okta会返回以下错误对象:

      stdClass Object
      (
          [errorCode] => E0000001
          [errorSummary] => Api validation failed: factorEnrollRequest
          [errorLink] => E0000001
          [errorId] => oae3MBJJpGrR6Oj_MkGOxed_g
          [errorCauses] => Array
              (
                  [0] => stdClass Object
                      (
                          [errorSummary] => There is an existing verified phone number.
                      )
              )
      )
      

    如何解决此问题?我错过了一个必须删除之前验证的电话号码的步骤吗?如果是这样,我该怎么做?

3 个答案:

答案 0 :(得分:0)

此端点的更新方法未记录,但可以执行。

如果您之前已移除短信并且知道以前注册的电话号码,我知道如何恢复该流程。

在该场景之外,如果您要更改号码,请执行以下操作。

  1. 获取完整的list of factors
  2. 确定要更改的SMS因素(我们需要fid)
  3. 使用现有短信的系数ID和新电话号码

    POST https://{yourorg}.com/api/v1/users/{:uid}/factors/{:fid}
    {
        "profile":
        {
            "phoneNumber": "+1 555 123 1234"
        }
    }
    
  4. 响应与newly enrolled短信因素的响应相同

  5. reset/delete现有的fid
  6. Activate使用
  7. 的新因素

    如果您遇到上一个因素被重置且您不知道fid但确实知道该号码enroll的情况,请检索该fid,然后开始上述序列。< / p>

答案 1 :(得分:0)

我有相同的要求 我尝试了以下过程:

1。使用GET FACTORS从用户获取“因子”列表-提取因子ID。

2。使用DELETE FACTOR删除现有的SMS FACTOR-必须在URL中提及FactorId

3。然后使用{{url}}/api/v1/authn/factors?updatePhone=true

此过程帮助我删除了已激活的短信因素,并将短信注册为具有更新手机号码的MFA。

希望这会有所帮助。

答案 2 :(得分:0)

如果用户想要使用不同的电话号码(而不是现有电话号码),则注册 API 调用需要提供设置为 true 的 updatePhone 查询参数。

无法为已激活的 SMS Factor 更新电话号码。如果您想更新电话号码,则需要重置因子并重新注册:

列出已注册的因子并提取相关因子Id。 重置因子 然后再次注册因子。只要 Factor 的状态值为 PENDING_ACTIVATION,您就可以传递设置为 true 的 updatePhone 参数以及更新的 phoneNumber 值。

请求示例

curl -v -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: SSWS ${api_token}" \
-d '{
  "factorType": "sms",
  "provider": "OKTA",
  "profile": {
    "phoneNumber": "+1-555-415-1337"
  }
}' "https://${yourOktaDomain}/api/v1/users/${userId}/factors?updatePhone=true"