При попытке аутентификации в Active Directory для получения токена доступа я выполнил следующие действия:
1 - создал приложение в Azure, используя следующие инструкции (шаг 3): https://github.com/Azure-Samples/active-directory-java-native-headless#step-3--register-the-sample-with-your-azure-active-directory-tenant
2 - Создана учетная запись пользователя «Azure Active Directory» с разрешением «Участник фабрики данных».
3 - Использовав шаги из (URL ниже), я следовал примеру кода, чтобы попытаться получитьтокен доступа: https://github.com/Azure-Samples/active-directory-java-native-headless/blob/master/src/main/java/PublicClient.java
Примечание: я использую ресурс ... https://management.core.windows.net/
..., используя в качестве примера следующее: https://docs.microsoft.com/en-us/azure/data-factory/quickstart-create-data-factory-rest-api#authenticate-with-azure-ad
4 - Сервер отвечает следующей ошибкой:
Exception in thread "main" java.util.concurrent.ExecutionException: com.microsoft.aad.adal4j.AuthenticationException: { "error_description": "AADSTS65001: The user or administrator has not consented to use the application with ID '<my-app-id>' named '<my-app-name>'. Send an interactive authorization request for this user and resource.\r\nTrace ID: d0af56e6-aaa3-4d25-b23b- 2984ed2b4400\r\nCorrelation ID: 2422cc2f-1cdd-45c5-8b7c- 46b1eee4ffae\r\nTimestamp: 2019-03-22 04:58:16Z", "error": "invalid_grant" }
Какие гранты требуются для того, чтобы заставить аутентификацию работать?
Вы должны сделать запрос авторизации в Azure AD, который включает параметр prompt = admin_consent.
Перейдите по URL-адресу, например https://login.microsoftonline.com/tenant-id/oauth2/authorize?client_id=app-client-id&redirect_uri=encoded-reply-url&response_type=code&prompt=admin_consent.
. Используйте свою учетную запись администратора для подтверждения разрешений.
Тогда мы сможем успешно получить токен доступа.