Получить токен для Microsoft Graph API на Java

#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, чтобы команда идентификации могла его изучить.