Как исправить «Оценка непрерывного доступа привела к проблеме с результатом: InteractionRequired и код: TokenCreatedWithJAVA

Программисты JAVA общаются здесь
Anonymous
Как исправить «Оценка непрерывного доступа привела к проблеме с результатом: InteractionRequired и код: TokenCreatedWith

Сообщение Anonymous »

У меня есть пользователь, которому разрешено использовать API MS Graph.
Я написал код на Java, который использует MicrosoftGraphClient и выполняет простой поиск для поиска пользователя по электронной почте. Код работает нормально сразу после запуска приложения, но через некоторое время (примерно день) он начинает выдавать исключение. Я подозреваю, что исключение просто оборачивает HTTP-ответ, поступающий от REST API.

Код: Выделить всё

com.microsoft.graph.models.odataerrors.ODataError: Continuous access evaluation resulted in challenge with result: InteractionRequired and code: TokenCreatedWithOutdatedPolicies
at com.microsoft.graph.models.odataerrors.ODataError.createFromDiscriminatorValue(ODataError.java:36)
Я использую зависимость:

Код: Выделить всё

      
com.microsoft.graph
microsoft-graph
6.55.0


com.azure
azure-identity
1.13.0

И мой код:
Класс конфигурации:

Код: Выделить всё

@Configuration
public class MicrosoftGraphConfiguration {
@Bean
MicrosoftGraphClient microsoftGraphClient(GraphServiceClient graphServiceClient) {
return new MicrosoftGraphClient(graphServiceClient);
}

@Bean
GraphServiceClient graphClient(MicrosoftGraphProperties microsoftGraphProperties) {
ClientSecretCredential credential = new ClientSecretCredentialBuilder()
.clientId(microsoftGraphProperties.getClientId())
.clientSecret(microsoftGraphProperties.getClientSecret())
.tenantId(microsoftGraphProperties.getTenantId())
.build();
return new GraphServiceClient(credential);
}

}

Класс обслуживания:

Код: Выделить всё

   private final GraphServiceClient graphClient;

public Optional lookupUserByEmail(String email) {

try {
UserCollectionResponse userCollectionResponse = graphClient.users().get(conf -> {
conf.queryParameters.filter = "mail eq '" + email + "'";
});
List users = userCollectionResponse.getValue();
...
return Optional.of(user);
} catch (ODataError oDataError) {
LOGGER.error("Problem while searching user in ms graph.  ", oDataError);
} catch (Exception e) {
...
}
}
К сожалению, у меня нет доступа к Azure, чтобы попытаться узнать какие-либо конфигурации или просмотреть какие-либо журналы этой ситуации.
Я спросил команду, которая занимается политиками, и они сказали, что политики не меняются так часто, поэтому я не думаю, что «TokenCreatedWithOutdatedPolicies» - это действительно то, что происходит. В любом случае я не знаю, как исследовать эту проблему или даже как найти решение.
Можно ли каким-либо образом понять, что на самом деле происходит под капотом? Могу ли я что-нибудь добавить в свой код, чтобы лучше понять основную причину?
Случайно, есть ли у кого-нибудь идеи, какое потенциальное решение этой ситуации может быть? Также непросто работать над исправлением в режиме разработки, потому что я не могу просто запустить junit-тест и попытаться проверить, работает ли какое-либо исправление, потому что, как я уже сказал, проблема возникает после того, как приложение работает в течение дня.

Вернуться в «JAVA»