0

Мой запрос REST выглядит это после того, как я прочитал это руководство: How to Authorize to Microsoft Azure-ADAzure AD OAuth 2.0 Код авторизации Грант с Java-Джерси

Client cli = ClientBuilder.newClient(); 
WebTarget webTar = cli.target("https://login.microsoftonline.com/yyyyy.onmicrosoft.com/oauth2/authorize").queryParam("response_type", "code"); 
webTar = webTar.queryParam("client_id", "ed4d67dc-34a8-4eb3-9058-49f39yyyyyy"); 
webTar = webTar.queryParam("redirect_uri", URLEncoder.encode("https://xyxyxyx.onmicrosoft.com/o365jso", "UTF-8")); 
String response = webTar.request(MediaType.APPLICATION_JSON).get(String.class); 

Однако я получаю полный HTML в ответ, который приходит к выводу о том, что конечная точка думает, что это браузер. Есть ли способ как-то правильно (в форме URL-адреса авторизации) получить код авторизации, а затем открыть токен для Sharepoint/Exchange с помощью Java-Джерси?

ответ

0

В потоке предоставления авторизационного кода пользовательским агентом (например, браузером) является тот, который должен делать запрос GET в конечную точку авторизации. Это первый шаг описан в документе:

  1. Клиентское приложение запускает поток путем перенаправления агента пользователя к конечной точке Azure авторизации AD. Пользователь подтверждает подлинность и соглашается, если требуется согласие.

Это необходимо для взаимодействия различных возможных взаимодействий. Иногда отображается подсказка о согласии пользователя, или, возможно, многофакторная аутентификация или федерация на локальном STS пользователя.

После аутентификации пользователя Azure AD перенаправляет пользовательский агент обратно в URI, указанный в redirect_uri, включая код авторизации в качестве параметра запроса. Это приведет к запросу GET к вашей службе с параметром code, который вы можете использовать для запроса доступа к токену (теперь вы можете получить запрос непосредственно от вашего сервиса до Azure AD).

Если вместо аутентификации пользователя вы заинтересованы в выполнении аутентификации по сервису, вы должны использовать другой поток, как описано в Service to Service Calls Using Client Credentials.