Я написал код на 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) {
...
}
}
Я спросил команду, которая занимается политиками, и они сказали, что политики не меняются так часто, поэтому я не думаю, что «TokenCreatedWithOutdatedPolicies» - это действительно то, что происходит. В любом случае я не знаю, как исследовать эту проблему или даже как найти решение.
Можно ли каким-либо образом понять, что на самом деле происходит под капотом? Могу ли я что-нибудь добавить в свой код, чтобы лучше понять основную причину?
Случайно, есть ли у кого-нибудь идеи, какое потенциальное решение этой ситуации может быть? Также непросто работать над исправлением в режиме разработки, потому что я не могу просто запустить junit-тест и попытаться проверить, работает ли какое-либо исправление, потому что, как я уже сказал, проблема возникает после того, как приложение работает в течение дня.