我想在我的应用程序中集成2FA,该应用程序已在Azure AD上注册。身份验证流程要求用户输入用户名和密码,在单击登录后,他必须立即在Microsoft Authenticator应用程序上收到通知,以确认或拒绝访问。在我的Java代码中,我使用了PublicClientApplication(带有我的客户端ID和租户)和UserNamePasswordParameters(带有作用域、用户名和密码)。当我尝试获取令牌时,将我的UsernamePasswordParameters传递给我的PublicClientApplication时,我会得到以下异常:
“AADSTS50076:由于管理员更改了配置,或者您已移动到新位置,因此必须使用多因素身份验证才能访问“”。
我已经在这个网站上搜索了一些问题,但它们对我的情况不是决定性的:
"Azure-ad-authentication-with-2fa"
1条答案
按热度按时间k4emjkb11#
注意:ROPC /用户名-密码流不支持启用MFA的帐户。如果您正在传递启用了MFA的用户以登录到应用程序,则它将被阻止。参考MsDoc。
我为用户启用了MFA,如下所示:
现在,我尝试通过Postman使用ROPC flow生成访问令牌:
我得到了如下的错误:
当我尝试使用未启用MFA的用户时,访问令牌生成成功:
因此,要解决问题,可以使用其他交互流,如授权码流或隐式流。
我使用下面的端点对用户进行了授权:
代码生成成功,如下所示:
我使用以下参数生成了访问令牌:
参考文献:
Spring Boot Starter for Azure Active Directory developer's guide
Azure AD Integration in Spring Boot Application | by Pradeep Maiya