执行以下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#版本相同的体验。
由于
答案 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。