У нас есть шлюзовые службы, которые используются только для аутентификации и авторизации.
У нас есть Еще 2 службы, службы1 и службы2, которые работают как сервер ресурсов.
Для служб шлюза мы используем (настройка весенней загрузки) Spring-cloud-starter-gateway-mvc и Spring Security.
Он прекрасно работает как на локальном, так и на непроизводственном и производственном уровне.
Но некоторое время между ними (даже после успешного входа в систему и использования приложения это происходит между ними и случайно ) мы сталкиваемся с проблемой недопустимого пользователя, и приложение зависает, и все остальные пользователи также сталкиваются с той же проблемой.
Через какое-то время она сама решается.
Я проверил журнал и решил прилагаю пример.
Код: Выделить всё
2024-08-21T07:55:56.343Z DEBUG 1 --- [gateway-service] [nio-9092-exec-3] o.s.s.web.DefaultRedirectStrategy : Redirecting to https://prod.myurl.com/login
2024-08-21T07:55:56.397Z DEBUG 1 --- [gateway-service] [nio-9092-exec-5] o.s.security.web.FilterChainProxy : Securing GET /login
2024-08-21T07:55:56.720Z DEBUG 1 --- [gateway-service] [nio-9092-exec-2] o.s.security.web.FilterChainProxy : Securing GET /oauth2/authorization/azure
2024-08-21T07:55:56.721Z DEBUG 1 --- [gateway-service] [nio-9092-exec-2] o.s.s.web.DefaultRedirectStrategy : Redirecting to https://login.microsoftonline.com/tenantid/oauth2/v2.0/authorize?response_type=code&client_id=client123&scope=api://az0-myurld-prod-app/User.Read%20openid&state=dwerr%3D&redirect_uri=https://prod.myurl.com/login/oauth2/code/azure&nonce=xxxxyyy
2024-08-21T07:55:58.240Z DEBUG 1 --- [gateway-service] [nio-9092-exec-4] o.s.security.web.FilterChainProxy : Securing GET /login?error
2024-08-21T07:56:08.010Z DEBUG 1 --- [gateway-service] [nio-9092-exec-7] o.s.security.web.FilterChainProxy : Securing GET /login/oauth2/code/azure?code=code123&session_state=session123
2024-08-21T07:56:08.010Z DEBUG 1 --- [gateway-service] [nio-9092-exec-7] o.s.s.web.DefaultRedirectStrategy : Redirecting to /login?error
Сначала вы отправите идентификатор пользователя и пароль, а взамен Azure предоставит код, как вы можете видеть в журналах. .
Вы снова отправите код в Azure, и он предоставит вам токен.
В наших случаях это работает, как я упоминал выше.
Но иногда это происходит код из Azure, и он переходит к пружинному фильтру, а пружинный фильтр выдает ошибку недопустимого пользователя.
Как вы можете видеть выше в журнале, filterChainProxy выдает ошибку.
Я не могу понять несколько вещей
- как создать это локально
- во-вторых, в чем может быть проблема с кодом, который Spring выдает ошибку.
- Проблема связана с весенним сеансом или некоторыми потоками.
- Если у одного пользователя возникает эта проблема, у всех пользователей возникает одна и та же проблема, и через некоторое время она решается .
Пожалуйста, сообщите, если вам нужна дополнительная информация по этому поводу, например подробности настройки проекта.
Спасибо за помощь и поддержку.
Подробнее здесь: https://stackoverflow.com/questions/790 ... production