gpt4 book ai didi

java - Spring Security 具有自定义 AuthenticationProvider 自定义用户详细信息和自定义安全上下文

转载 作者:行者123 更新时间:2023-12-02 04:00:35 30 4
gpt4 key购买 nike

我有一个 Keycloak 连接器,允许我通过 SSO 检索用户的用户名。我想使用这个用户名来验证用户并在数据库中查找他的权限,并将该用户权限注入(inject)到 spring security 中以便能够使用其功能。

我已经使用自定义 UserDetailsS​​ervice 创建了一个自定义的authenticationProvider,而我一直面临的问题是我每次都会被重定向到 spring security 登录页面。我认为当它看到请求中没有身份验证对象时,它会自行执行此操作。

这是检索用户名的代码。我觉得我已经掌握了大部分内容,但我不知道如何在 spring security 中注入(inject)它或至少到目前为止我所有的想法都行不通。这就是为什么我希望找到 Spring 安全方面的专家来为我指明正确的方向。提前致谢

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

最佳答案

这就是我最终要做的,我创建了一个 CustomAuthenticationFilter 扩展 GenericFilterBean ,通过 SecurityConfig 扩展 WebSecurityConfigurerAdapter 放置在过滤器链中,在 doFilter 方法中的这个过滤器内,我检索用户名并创建一个 UsernamePasswordAuthenticationToken ,然后将其添加到我从 SecurityContext 中检索 CustomAuthenticationProvider 中的用户名,该提供程序通过调用数据库并检索角色来创建身份验证。

关于java - Spring Security 具有自定义 AuthenticationProvider 自定义用户详细信息和自定义安全上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56735630/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com