使用adal4j从AzureAD获取用户的名字和姓氏-AADSTS50076错误

时间:2018-06-19 20:02:32

标签: java azure-active-directory adal4j

我已经在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:由于由管理员进行的配置更改,或者因为您已移至新位置,必须使用多因素身份验证来访问...

所以问题是如何使用adal4j使用多因素身份验证?有任何想法吗? 我不想使用任何页面重定向。

我知道即使 发生AADSTS50076错误电子邮件/密码组合正确(否则存在另一个不同的错误),但是我无法使用AADSTS50076获得userInfo对象

最好的问候

0 个答案:

没有答案