【发布时间】:2018-01-23 11:36:43
【问题描述】:
我正在使用 java 后端服务器连接到启用 Azure AD 的 API。我可以通过以下 java 代码获取访问令牌。
String tenantId = "************";
String username = "***************";
String password = "*************";
String clientId = "**********";
String resource = "***********";
String userEmail = "**********";
AuthenticationContext authContext = null;
AuthenticationResult authResult = null;
ExecutorService service = null;
try
{
service = Executors.newFixedThreadPool( 1 );
String url = "https://login.microsoftonline.com/" + tenantId + "/oauth2/authorize";
authContext = new AuthenticationContext( url, false, service );
Future<AuthenticationResult> future = authContext.acquireToken(
resource,
clientId,
userEmail,
password,
null );
authResult = future.get();
}
catch( Exception ex )
{
ex.printStackTrace();
}
请注意,API 提供商目前不支持客户端凭据。
我的问题是,使用上面代码中收到的刷新令牌来获取新的访问令牌。
ADAL4j java 库似乎没有任何方法支持这一点。 A Documentation for java library
但在 .NET 库中有类似的方法,
public AuthenticationResult AcquireTokenByRefreshToken(
string refreshToken,
string clientId,
string resource
)
用于在不提供任何凭据的情况下刷新访问令牌。
为什么Java库中没有提供这些方法?。有什么限制吗? 有哪些可能的解决方法?
提前致谢。
【问题讨论】:
标签: java azure oauth-2.0 refresh-token adal4j