#spring-boot #spring-security #amazon-cognito
#пружинный ботинок #весна-безопасность #amazon-cognito
Вопрос:
Я разработал базовую службу загрузки Spring с защитой Spring со следующей конфигурацией
spring: security: oauth2: client: registration: cognito: clientId: yyyy clientSecret: xxxx scope: openid redirect-uri: http://localhost:8080/login/oauth2/code/cognito clientName: spring-sso provider: cognito: issuerUri: https://cognito-idp.eu-west-1.amazonaws.com/zzzzzzzzzz user-name-attribute: cognito:username
Все работает нормально, пользователь перенаправляется на страницу единого входа AWS Cognito.
Однако я не могу точно определить, где логика этого перенаправления происходит в Spring framework.
Я включил отладку и вижу список фильтров безопасности, которые вызываются в цепочке.
WebAsyncManagerIntegrationFilter SecurityContextPersistenceFilter HeaderWriterFilter CsrfFilter LogoutFilter OAuth2AuthorizationRequestRedirectFilter OAuth2LoginAuthenticationFilter DefaultLoginPageGeneratingFilter DefaultLogoutPageGeneratingFilter RequestCacheAwareFilter SecurityContextHolderAwareRequestFilter AnonymousAuthenticationFilter SessionManagementFilter ExceptionTranslationFilter FilterSecurityInterceptor
Я поставил точки отладки OAuth2AuthorizationRequestRedirectFilter
DefaultLoginPageGeneratingFilter
и , OAuth2LoginAuthenticationFilter
но безуспешно.
Где происходит волшебство, когда он создает URL-адрес для отправки пользователя на страницу единого входа:
Если пользователь, не прошедший проверку подлинности, обращается к защищенной странице —gt; затем перенаправьте на страницу входа в систему единого входа
Причина, по которой я заинтересован, заключается в том, чтобы я мог определить, могу ли я использовать ту же библиотеку в старом приложении Jakarta EE или нет.
Ответ №1:
Вызывается интерфейс, отвечающий за перенаправление пользователя, не прошедшего проверку подлинности, в Spring Security AuthenticationEntryPoint
. (Я всегда находил название запутанным, но идея в том, что оно указывает не прошедшему проверку подлинности пользователю, где пройти аутентификацию, т. Е. Найти «запись».)
Что касается фильтра, посмотрите в ExceptionTranslationFilter
.
В версии , которую я сейчас рассматриваю (5.3.4), она находится в doFilter
то handleSpringSecurityException
время sendStartAuthentication
, то здесь authenticationEntryPoint.commence
называется.
Комментарии:
1. Спасибо, при отладке он генерирует uri перенаправления
/oauth2/authorization/cognito
, а не URL-адрес AWS cognito. Так это происходит где-то еще ниже по течению?2. Таким образом, похоже, что фактическое перенаправление происходит в строке 218 фильтра oauth2authorizationrequestredirect , когда используется путь сервлета
/oauth2/authorization/cognito