Spring OAuth2开放ID客户端身份验证,后跟LDAP用户详细信息&;当局
我们的应用程序目前使用OAuth OpenID连接身份验证和外部(第三方)服务器进行设置。需求是使用从LDAP加载用户(以及权限/角色)的用户详细信息服务来完成身份验证。因此,Spring OAuth2开放ID客户端身份验证,后跟LDAP用户详细信息&;当局,spring,spring-security,spring-security-oauth2,Spring,Spring Security,Spring Security Oauth2,我们的应用程序目前使用OAuth OpenID连接身份验证和外部(第三方)服务器进行设置。需求是使用从LDAP加载用户(以及权限/角色)的用户详细信息服务来完成身份验证。因此,authentication.getPrincipal()应该返回我们使用的自定义UserDetails对象,该对象是通过使用从开放ID身份验证获得的用户名查询LDAP生成的 我尝试了以下方法: 但在答案中,它似乎正在设置服务器端,而且也不起作用 已尝试在WebSecurity配置中添加自定义UserDetails服务
authentication.getPrincipal()
应该返回我们使用的自定义UserDetails对象,该对象是通过使用从开放ID身份验证获得的用户名查询LDAP生成的
我尝试了以下方法:- 但在答案中,它似乎正在设置服务器端,而且也不起作用
- 已尝试在WebSecurity配置中添加自定义UserDetails服务
其中myCustomUserDetailsService()处理对LDAP的调用并获取用户详细信息,包括权限。@配置 公共类OAuth2Config扩展了WebSecurity配置适配器{ @凌驾 受保护的无效配置(HttpSecurity http)引发异常{ http.oauth2Login()和().userDetailsService(myCustomUserDetailsService()); } }
我不太熟悉spring oauth2框架,如果我错了请纠正我:我猜我需要实现自己的用户信息端点来调用LDAP,而不是OpenID服务提供给我的用户信息端点?没有我希望的那么干净,但我在InteractiveAuthenticationSuccessEvent上注册了一个应用程序侦听器,并在登录后手动更新了身份验证(类似于帖子的答案) 如果有人有更好的建议
更新:身份提供商同意在他们的声明中包含LDAP信息,这样我就可以通过令牌直接获取,而无需回拨(目前仍在讨论中)。也就是说,拥有一个auth success回调应用程序侦听器是我解决这个问题的唯一方法。您可以在安全过滤器链中添加一个新的过滤器。第二个过滤器可以从用户的身份验证和查询中检索主体/名称 就像两步认证一样