我正在尝试在Web应用程序中使用Okta API,以允许用户激活/停用其帐户上的SMS MFA因子。但是,我遇到了一个问题,详情如下:
首先,在新创建的帐户上:
但是,所有这一切都运行良好且没有错误,现在再次尝试注册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.
)
)
)
如何解决此问题?我错过了一个必须删除之前验证的电话号码的步骤吗?如果是这样,我该怎么做?
答案 0 :(得分:0)
此端点的更新方法未记录,但可以执行。
如果您之前已移除短信并且不知道以前注册的电话号码,我不知道如何恢复该流程。
在该场景之外,如果您要更改号码,请执行以下操作。
使用现有短信的系数ID和新电话号码
POST https://{yourorg}.com/api/v1/users/{:uid}/factors/{:fid}
{
"profile":
{
"phoneNumber": "+1 555 123 1234"
}
}
响应与newly enrolled短信因素的响应相同
如果您遇到上一个因素被重置且您不知道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"