Spring Security с пользовательским AuthenticationProvider Пользовательские пользовательские детали и пользовательский контекст безопасности - PullRequest
0 голосов
/ 24 июня 2019

У меня есть разъем Keycloak, который позволяет мне получить имя пользователя через SSO. Я хочу использовать это имя пользователя для аутентификации пользователя, поиска его полномочий в базе данных и введения этих полномочий пользователя в систему безопасности Spring, чтобы иметь возможность использовать его функциональные возможности.

Я создал пользовательский провайдер аутентификации с пользовательским сервисом UserDetailsService, и проблема, с которой я сталкиваюсь, заключается в том, что меня каждый раз перенаправляют на страницу входа в систему безопасности. Я думаю, что когда он видит, что в запросе нет объекта аутентификации, он делает это самостоятельно.

Это код для получения имени пользователя. Я чувствую, что у меня есть большинство частей, но я не знаю , как внедрить его в весенней безопасности или, по крайней мере, все идеи, которые у меня были до сих пор, не сработают. Вот почему я надеюсь найти кого-то, кто является экспертом в области безопасности Spring, который укажет мне правильное направление. Заранее спасибо

KeycloakSecurityContext sc = (KeycloakSecurityContext)request.getAttribute(KeycloakSecurityContext.class.getName());
IDToken idToken=sc.getIdToken();
String userId=idToken.getPreferredUsername();

1 Ответ

0 голосов
/ 09 июля 2019

Это то, что я в итоге сделал, я создал CustomAuthenticationFilter, расширяет GenericFilterBean, который я помещаю в цепочку фильтров через SecurityConfig, расширяет WebSecurityConfigurerAdapter, внутри этого фильтра в методе doFilter я получаю имя пользователя и создаю UsernamePasswordAuthenticationToken, который затем добавляется в SecurityContext, из которого я получаю имя пользователя в CustomAuthenticationProvider, который создает аутентификацию, вызывая базу данных и получая роли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...