我在 Azure AD 中创建了本机应用程序。我有一段代码使用来自 Azure AD 用户(即电子邮件)/密码凭据的用户获取令牌:
public static void main(String[] args) throws MalformedURLException, ExecutionException, URISyntaxException {
String clientId = "myAppIdInAzureId";
String resourceUrl = "https://graph.windows.net";
String authorityUrl = "https://login.microsoftonline.com/xxxxxxxxxxxxxxxxxxxxxxxxxxx/oauth2/authorize";
String email = "my.email@post.com";
String password = "password";
ExecutorService executorService = Executors.newFixedThreadPool(4);
Optional<UserInfo> userInfo = Optional.empty();
try {
AuthenticationContext authContext = new AuthenticationContext(authorityUrl, false, executorService);
Future<AuthenticationResult> future = authContext.acquireToken(resourceUrl, clientId, email, password, null);
AuthenticationResult result = future.get();
userInfo = Optional.of(result.getUserInfo());
} catch (InterruptedException | MalformedURLException | ExecutionException e) {
System.out.println("Azure AD Authentication Exception using {" + email + "} email address, exception:" + e);
}
if (userInfo.isPresent()) {
System.out.println(userInfo.get().getGivenName());
System.out.println(userInfo.get().getFamilyName());
}
}
后来我获得了 userInfo 对象并获得了所需的数据,名字和姓氏。
它在本地工作,但部署到服务器后出现错误:
使用 {my.email@post.com} 电子邮件地址的 Azure AD 身份验证异常,异常:java.util.concurrent.ExecutionException:com.microsoft.aad.adal4j.AdalClaimsChallengeException:{“error_description”:“AADSTS50076:由于配置更改由您的管理员制作,或者因为您搬到了新位置,您必须使用多重身份验证才能访问……</p>
那么问题是如何使用 adal4j 进行多因素身份验证?有任何想法吗?我不想使用任何页面重定向。
我知道即使发生 AADSTS50076 错误电子邮件/密码组合是正确的(否则还有另一个不同的错误)但我无法使用 AADSTS50076 获取 userInfo 对象
此致