OAuth MSAL4J Office365 -> AccessToken error «Токен не содержит разрешений, или разрешения не могут быть поняты». - PullRequest
0 голосов
/ 06 марта 2020

В настоящее время я пытаюсь использовать библиотеку MSAL4J, чтобы получить AccessToken для ConfidentialClientApplication. Я уже получил токен, но когда я передаю его в Exchange, я получаю сообщение об ошибке «Токен не содержит разрешений, или разрешения не могут быть поняты». Я проверил токен с помощью jwt.io и вижу, что нет поля «scp», что означает, что, вероятно, нет областей, но я не знаю почему.

Код Java для доступа к токену :

String AUTHORITY = "https://login.microsoftonline.com/common";
IClientSecret createFromSecret = ClientCredentialFactory.createFromSecret(clientSecret);

Builder builder = ConfidentialClientApplication.builder(clientId, createFromSecret).authority(aUTHORITY).validateAuthority(true);
ConfidentialClientApplication application = builder.build();
HashSet<String> scopes = new HashSet<String>();
scopes.add("https://outlook.office.com/.default");
ClientCredentialParameters clientCredentialParameters = ClientCredentialParameters.builder(scopes).build();
CompletableFuture<IAuthenticationResult> acquireTokenFuture = application.acquireToken(clientCredentialParameters);
IAuthenticationResult iAuthenticationResult = acquireTokenFuture.get(30, TimeUnit.SECONDS);

iAuthenticationResult = acquireTokenFuture.get(30, TimeUnit.SECONDS);

Я добавил необходимые разрешения API и утвердил их с учетной записью администратора: api permissions

Есть идеи, что здесь не так?

1 Ответ

0 голосов
/ 06 марта 2020

Похоже, я нашел ответ сам. В моем случае мне пришлось добавить разрешения для обмена, график Microsoft (как он используется в каждом примере, который я нашел) не работает в этом сценарии или не является достаточным. Correct Permissions

...