Spring Boot 带有用户凭据和Microsoft Authenticator在Sping Boot 上通知的2FA

tyu7yeag  于 2023-05-22  发布在  Spring
关注(0)|答案(1)|浏览(263)

我想在我的应用程序中集成2FA,该应用程序已在Azure AD上注册。身份验证流程要求用户输入用户名和密码,在单击登录后,他必须立即在Microsoft Authenticator应用程序上收到通知,以确认或拒绝访问。在我的Java代码中,我使用了PublicClientApplication(带有我的客户端ID和租户)和UserNamePasswordParameters(带有作用域、用户名和密码)。当我尝试获取令牌时,将我的UsernamePasswordParameters传递给我的PublicClientApplication时,我会得到以下异常:
“AADSTS50076:由于管理员更改了配置,或者您已移动到新位置,因此必须使用多因素身份验证才能访问“”。
我已经在这个网站上搜索了一些问题,但它们对我的情况不是决定性的:
"Azure-ad-authentication-with-2fa"

k4emjkb1

k4emjkb11#

注意:ROPC /用户名-密码流不支持启用MFA的帐户。如果您正在传递启用了MFA的用户以登录到应用程序,则它将被阻止。参考MsDoc

为用户启用了MFA,如下所示:

现在,我尝试通过Postman使用ROPC flow生成访问令牌:

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

client_id:ClientID
scope:https://graph.microsoft.com/.default
grant_type:password
username:ruk@xxx.onmicrosoft.com
password:****
client_secret:ClientSecret

我得到了如下的错误

我尝试使用未启用MFA的用户时,访问令牌生成成功:

因此,要解决问题,可以使用其他交互流,如授权码流或隐式流。
我使用下面的端点对用户进行了授权

https://login.microsoftonline.com/TenantID/oauth2/v2.0/authorize?
&client_id=ClientID
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=https://graph.microsoft.com/.default
&state=12345

代码生成成功,如下所示:

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

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

client_id:ClientID
grant_type:authorization_code
scope:https://graph.microsoft.com/.default
code:code
redirect_uri:https://jwt.ms
client_secret:-ClientSecret

参考文献:

Spring Boot Starter for Azure Active Directory developer's guide
Azure AD Integration in Spring Boot Application | by Pradeep Maiya

相关问题