Как использовать Microsoft ADAL для Java для выполнения вызовов службы для обслуживания?

Я подумал, что на этот раз я буду использовать библиотеки Microsoft ADAL для взаимодействия с Office365.

Мне нужно выполнить задачу интеграции, поэтому взаимодействие с пользователем не требуется, вот где я нашел:

https://msdn.microsoft.com/en-us/library/azure/dn645543.aspx

Я могу получить токены, используя учетные данные клиента. Но согласно статье мне нужны только client_id и client_secret.

Я не смог найти метод в классе AuthenticationContext, предлагающий поддержку для этого.

Надеюсь, я что-то упускаю из виду.

Я знаю, что могу сам выполнять HTTP-запросы, но это противоречит цели использования программного обеспечения ADAL.


person mpjjonker    schedule 20.05.2016    source источник


Ответы (1)


Подпись метода, которую вы ищете:

public Future<AuthenticationResult> acquireToken(
    final String resource,
    final ClientCredential credential,
    final AuthenticationCallback callback)

ClientCredential создается с помощью client_id и client_secret приложения. Вот пример, который я позаимствовал из пример, включенный в ADAL4J:

Future<AuthenticationResult> future = context.acquireToken(
    "https://graph.windows.net",
    new ClientCredential(clientId, clientSecret),
    null);
result = future.get();

(В приведенном выше примере context является экземпляром AuthenticationContext.)

person Philippe Signoret    schedule 20.05.2016
comment
Теперь у меня есть токен доступа с этими учетными данными, но... При доступе (в моем случае) к crm онлайн я получаю http 401 (неавторизованный). В разрешениях Azure AD можно указать только один вариант: Доступ к CRM Online в качестве пользователей организации. Должен ли я создать новую тему, чтобы решить проблему, или вы, @PhilippeSignoret, можете мне помочь? - person mpjjonker; 24.05.2016
comment
Вы должны начать новый вопрос, но ответ таков: CRM Online поддерживает только токены приложения + пользователя (делегированные разрешения), а не только приложение. Если вы хотите, чтобы ваш процесс олицетворял пользователя, даже когда пользователя там нет, это может быть достигнуто с помощью токена обновления для получения новых токенов доступа, но это хрупкая (и рискованная) настройка. - person Philippe Signoret; 24.05.2016