如何在Java中获取访问令牌时提示输入用户名和密码

时间:2015-06-11 22:22:08

标签: adal

执行以下C#代码时,系统会提示用户(通过ADAL窗口)输入用户名和密码。

AuthenticationContext authContext = new AuthenticationContext("https://login.windows.net/common", false);
AuthenticationResult result = authContext.AcquireToken(serviceUrl, clientId, new Uri(redirectUrl));

我正在使用来自GitHub的ADAL for Java将代码转换为Java。我没有看到任何与我在C#中使用的方法匹配的acquireToken()方法调用。我目前使用的代码是:

AuthenticationContext context = new AuthenticationContext(
    "https://login.windows.net/common", false, service);
Future<AuthenticationResult> future = context.acquireToken(RESOURCE_URL, CLIENT_ID, username, password, null);
AuthenticationResult result = future.get();

但是,ADAL不会提示输入用户名/密码。我必须将Java代码添加到我的控制台应用程序中才能执行此操作。有没有更好的办法?我希望拥有与C#版本相同的体验。

由于

2 个答案:

答案 0 :(得分:0)

目前,不支持通过Java弹出ADAL窗口。

答案 1 :(得分:0)

ADAL Java目前不支持提示用户交互的方法,因为基于平台的Java应用程序中的用户交互会有所不同。

但是可以使用ADAL Java Auth code flow在Web应用程序中的用户上下文中获取令牌。您需要制作一个请求,以首先从Azure AD的/ authorize端点获取授权代码。这允许用户在Azure AD登录页面上使用其用户名和密码进行身份验证。然后,您可以调用方法acquireTokenByAuthorizationCode为用户获取令牌。此流程为sample

如果您需要用户在控制台应用程序中的Azure AD登录提示下进行身份验证,您还可以考虑device code flow