Я подключаюсь к API с поддержкой Azure AD, используя внутренний сервер Java. Я могу получить токен доступа, следуя коду 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 в настоящее время не поддерживает учетные данные клиента.
Для меня проблема заключается в использовании токена обновления, полученного в приведенном выше коде, для получения нового токена доступа.
Java-библиотека ADAL4j, похоже, не имеет методов, поддерживающих это. Документация по библиотеке Java
Но в библиотеке .NET есть такие методы, как
public AuthenticationResult AcquireTokenByRefreshToken(
string refreshToken,
string clientId,
string resource
)
Для обновления токена доступа без предоставления каких-либо учетных данных.
Почему эти методы не предусмотрены в библиотеке Java? Есть ли ограничения? И каковы возможные обходные пути?
Заранее спасибо.