Azure IAM:使用curl在OAuth2中触发外部安全挑战

vfh0ocws  于 2023-01-12  发布在  其他
关注(0)|答案(1)|浏览(144)

我正在尝试通过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的正确方法是什么?

okxuctiv

okxuctiv1#

我尝试在我的环境中重现相同的结果,结果如下:

我创建了一个用户并启用了MFA

我尝试使用ROPC流在Postman中生成令牌,并得到类似的错误如下:

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

client_id:clientID
scope:openid
grant_type:password
username:username
password:password

注意:ROPC授权类型不支持启用MFA的用户,将被阻止。请参阅此MsDoc

要在MFA后端OAuth2流中获取**access_token,可以使用Authorization Code Flow,如下所示:
利用以下终点生成
auth-code**:

https://login.microsoftonline.com/TenantID/oauth2/v2.0/authorize?

&client_id=ClientID
&response_type=code
&redirect_uri=RedirectURI
&response_mode=query
&scope=openid
&state=12345

以启用MFA的用户身份登录,生成如下代码:

我使用以下参数生成了令牌:

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

client_id:ClientID
client_secret:ClientSecert
scope:openid
grant_type:authorization_code
redirect_uri:RedirectURI
code:code

您还可以为启用MFA的用户使用隐式授权流。请参阅此MsDoc

相关问题