Конфиденциальные клиентские запросы не поддерживаются на конечной точке publi c для клиентов с универсальной группой безопасности области репликации - PullRequest
0 голосов
/ 07 мая 2020

У меня есть приложение Java, которое извлекает секрет из Key Vault в облаке Azure US Sovereign (https://*****.vault.usgovcloudapi.net) через клиент App Registration.

Приложение работает нормально с тех пор, как я начал использовать Java SDK. Однако при запуске приложения сегодня получить секрет не удалось. Возникло следующее исключение:

2020-05-08 00:42:32.711 ERROR 2100 --- [onPool-worker-3] c.m.a.m.ConfidentialClientApplication    : [Correlation ID: 6ae589cd-0ebd-4b51-97ad-aa45dc240708] Execution of class com.microsoft.aad.msal4j.AcquireTokenByAuthorizationGrantSupplier failed.

com.microsoft.aad.msal4j.MsalServiceException: AADSTS900439: Confidential Client requests are not supported on public endpoint for tenants with replication scope USG. Send your requests to https://login.microsoftonline.us
Trace ID: d7bcf956-f161-4e5c-867e-84f79005ac00
Correlation ID: 6ae589cd-0ebd-4b51-97ad-aa45dc240708
Timestamp: 2020-05-07 19:12:42Z
    at com.microsoft.aad.msal4j.MsalServiceExceptionFactory.fromHttpResponse(MsalServiceExceptionFactory.java:46) ~[msal4j-0.5.0-preview.jar:0.5.0-preview]
    at com.microsoft.aad.msal4j.TokenRequest.executeOauthRequestAndProcessResponse(TokenRequest.java:109) ~[msal4j-0.5.0-preview.jar:0.5.0-preview]
    at com.microsoft.aad.msal4j.ClientApplicationBase.acquireTokenCommon(ClientApplicationBase.java:163) ~[msal4j-0.5.0-preview.jar:0.5.0-preview]
    at com.microsoft.aad.msal4j.AcquireTokenByAuthorizationGrantSupplier.execute(AcquireTokenByAuthorizationGrantSupplier.java:52) ~[msal4j-0.5.0-preview.jar:0.5.0-preview]
    at com.microsoft.aad.msal4j.AuthenticationResultSupplier.get(AuthenticationResultSupplier.java:57) ~[msal4j-0.5.0-preview.jar:0.5.0-preview]
    at com.microsoft.aad.msal4j.AuthenticationResultSupplier.get(AuthenticationResultSupplier.java:17) ~[msal4j-0.5.0-preview.jar:0.5.0-preview]
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) ~[na:na]
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1692) ~[na:na]
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) ~[na:na]
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) ~[na:na]
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) ~[na:na]
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) ~[na:na]
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177) ~[na:na]

Некоторые дополнительные сведения :
- Операционная система - Windows 10
- IDE - Eclipse 2020-03 (4.15.0 )
- Azure Версия библиотеки Key Vault - com.azure:azure-security-keyvault-secrets:4.1.0

Может ли кто-нибудь объяснить, почему возникла эта проблема? Мне не удалось найти документацию по Azure по этому же поводу.

1 Ответ

0 голосов
/ 08 мая 2020

При создании ConfidentialClientApplication используйте конечную точку правительства вместо publi c one:

        ConfidentialClientApplication app = ConfidentialClientApplication.builder(
                CONFIDENTIAL_CLIENT_ID,
                ClientCredentialFactory.createFromSecret(CONFIDENTIAL_CLIENT_SECRET))
                .authority("https://login.microsoftonline.us/your-tenant-id")
                .build();

Вероятно, это критическое изменение, о котором не очень хорошо было объявлено (?), Поскольку некоторые другие также внезапно это понимают, например https://developercommunity.visualstudio.com/content/problem/1018249/azure-file-copy-task-login-error-error.html

...