#java #oauth #microsoft-graph-api #token #msal
#java #oauth #microsoft-graph-api #токен #msal
Вопрос:
Я хотел бы использовать Microsoft Graph API для управления файлами дисков, но у меня возникли некоторые проблемы с аутентификацией…
У меня есть приведенный ниже код, чтобы получить права на доступ к моей учетной записи :
try(InputStream propFile = MicrosoftEngine.class.getClassLoader().getResourceAsStream("microsoft.properties")){
Properties prop = new Properties();
prop.load(propFile);
setGraphClient(GraphServiceClient.builder().authenticationProvider(request -> {
// Add the access token in the Authorization header
request.addHeader("Authorization", "Bearer " prop.getProperty("token"));
}).buildClient());
IDriveItemCollectionPage children = graphClient.me().drive().root().children().buildRequest().get();
setDrive(children);
}
catch(IOException e) {
e.printStackTrace();
}
Но на данный момент значение свойства «token» берется из Microsoft Graph Explorer :
Через некоторое время (возможно, через час) срок действия токена истекает, и мне нужно отправить еще один запрос через Graph Explorer, чтобы получить новый токен и скопировать / вставить его в мой Java-код.
Но это не удобно… Как я могу получить это значение токена в Java? Есть идеи?
Заранее спасибо за вашу помощь 🙂
Комментарии:
1. Возможно, вам потребуется сделать отдельный запрос для запроса токена. Что говорится об этом в документации API?
2. Для аутентификации сначала вам нужно реализовать MSAL, чтобы получить токен из AAD. Отсюда можно начать реализацию аутентификации в Microsoft Graph. Вы можете попробовать этот пример , чтобы начать работу с реализацией Microsoft Graph для JAVA.
3. @MLarionov на самом деле это код, который я получил из документации…
4. @Shiva-MSFTIdentity Спасибо, я протестировал образец и получил некоторые результаты с данными календаря, я собираюсь попытаться получить доступ к своим файлам OneDrive с помощью части аутентификации образца 🙂
5. Рад, что это помогло вам. Перемещаем это в ответ. пожалуйста, отметьте это как ответ, щелкнув галочку. Это помогает другим людям находить ответы на свои вопросы. См . meta.stackexchange.com/questions/5234 /… :)-
Ответ №1:
Для аутентификации сначала вам нужно реализовать MSAL, чтобы получить токен из AAD. Отсюда можно начать реализацию аутентификации в Microsoft Graph. Вы можете попробовать этот пример, чтобы начать работу с реализацией Microsoft Graph для JAVA.
Комментарии:
1. Еще раз здравствуйте @Shiva-MSFTIdentity, в примере для получения токена используется код устройства, и я попытался заменить его на IntegratedWindowsAuthenticationParameters, чтобы избежать входа пользователя в систему (я использую свою личную учетную запись). Но я получил сообщение об ошибке: «com.microsoft.aad.msal4j.MsalServiceException: конечная точка WsTrust не найдена в документе метаданных»… Есть ли что-то, что я должен изменить при регистрации моего приложения?
2. Привет @digimip09, вы можете ознакомиться с этим общедоступным документом , в котором реализована интегрированная проверка подлинности Windows. Если у вас возникли какие-либо дополнительные проблемы в основном с аутентификацией, пожалуйста, создайте вопрос о переполнении стека с тегом azure-active-directory, чтобы команда идентификации могла его изучить.