我正在尝试通过OAuth2在Azure IAM中获取我的用户的access_token。我以如下方式构建了一个curl
命令:
curl \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "scope=openid" \
-d "response_type=id_token+access_token" \
-d "grant_type=password" \
-d "client_id=${MY_APP_ID}" \
-d "username=${MY_USER}" \
-d "password=${MY_PASS}' \
'https://login.microsoftonline.com/${MY_TENANT_ID}/oauth2/v2.0/token'
不管我得到了什么:
{"error":"invalid_grant","error_description":"AADSTS50158: External security challenge not satisfied. User will be redirected to another page or authentication provider to satisfy additional authentication challenges...
我们使用MFA,但是curl调用没有触发它。在MFA支持的OAuth2流中获取access_token
的正确方法是什么?
1条答案
按热度按时间okxuctiv1#
我尝试在我的环境中重现相同的结果,结果如下:
我创建了一个用户并启用了MFA:
我尝试使用ROPC流在Postman中生成令牌,并得到类似的错误如下:
注意:ROPC授权类型不支持启用MFA的用户,将被阻止。请参阅此MsDoc。
要在MFA后端OAuth2流中获取**
access_token
,可以使用Authorization Code Flow,如下所示:利用以下终点生成
auth-code
**:我以启用MFA的用户身份登录,生成如下代码:
我使用以下参数生成了令牌:
您还可以为启用MFA的用户使用隐式授权流。请参阅此MsDoc。