Токен не найден в кеше Azure JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Токен не найден в кеше Azure Java

Сообщение Anonymous »

Я адаптирую интеграцию веб-службы для использования Azure oauth2.0, сторонний поставщик предоставил нам следующие сведения: URL-адрес веб-службы, public_client_id, полномочия, client_secret, tenant_id и client_scope.
Изначально я пытался просто создать токен, но, получив сообщение об ошибке ниже, они сказали, что мне следует сначала проверить, существует ли токен, поскольку они не могут обновить существующий токен.
/>Приведенный ниже код, за которым следует полученная мной ошибка, которую, по их словам, они никогда раньше не видели.

Код: Выделить всё

IAuthenticationResult result;
try {
PublicClientApplication application = PublicClientApplication
.builder(PUBLIC_CLIENT_ID)
.build();

SilentParameters parameters = SilentParameters
.builder(Collections.singleton(CLIENT_SCOPE))
.authorityUrl(AUTHORITY)
.build();

result = application.acquireTokenSilently(parameters).join();
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
if (result != null || !(result.toString().equals("")))
{
_token = String.valueOf(result);
} else {

log.info("Setting scope.");
String[] scopes = new String[] { CLIENT_SCOPE }; // Scope required for
// accessing specific
// API
log.info("Setting credentials.");
ClientSecretCredential credential = new ClientSecretCredentialBuilder()
.clientId(PUBLIC_CLIENT_ID)
.clientSecret(CLIENT_SECRET)
.tenantId(TENANT_ID)
.build();
log.info("TokenRequestContext...");
TokenRequestContext requestContext = new TokenRequestContext().addScopes(scopes);

log.info("credential.getToken...");

_token = credential.getToken(requestContext).block().getToken();
}
log.info("Token: " + _token);

HttpClient httpClient = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_1_1)
.build();

String url = "azureURLRedacted";

HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer " + _token)
.GET()
.build();

CompletableFuture responseFuture = httpClient.sendAsync(request,
HttpResponse.BodyHandlers.ofString());

// Handle the response asynchronously
responseFuture.thenAccept(response -> {
int statusCode = response.statusCode();
String responseBody = response.body();
System.out.println("Response Status Code: " + statusCode);
System.out.println("Response Body: ");
System.out.println(responseBody);
}).join();
Ошибка:

Код: Выделить всё

java.util.concurrent.CompletionException: com.microsoft.aad.msal4j.MsalClientException: Token not found in the cache
at com.microsoft.aad.msal4j.AuthenticationResultSupplier.get(AuthenticationResultSupplier.java:103) ~[?:?]
at com.microsoft.aad.msal4j.AuthenticationResultSupplier.get(AuthenticationResultSupplier.java:18) ~[?:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) ~[?:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1692) ~[?:?]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) ~[?:?]
at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) ~[?:?]
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) ~[?:?]
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) ~[?:?]
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183) ~[?:?]
Вызвано: com.microsoft.aad.msal4j.MsalClientException: токен не найден в кеше
в com.microsoft.aad.msal4j.AcquireTokenSilentSupplier.execute(AcquireTokenSilentSupplier.java :79) ~[?:?]
на com.microsoft.aad.msal4j.AuthenticationResultSupplier.get(AuthenticationResultSupplier.java:69) ~[?:?]
... еще 8
На основе прочитанной документации Azure я понимаю, что это может указывать на несколько вещей: либо на стороне Azure отсутствует конфигурация, либо некоторые предоставленные сведения неверны для области действия, либо я не отправить через что-то необходимое. Любые рекомендации приветствуются.
Я уверен, что все детали, получаемые через serverConfigurationService, правильно отражают то, где они используются.

Подробнее здесь: https://stackoverflow.com/questions/789 ... azure-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»