Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring OAuth2开放ID客户端身份验证,后跟LDAP用户详细信息&;当局_Spring_Spring Security_Spring Security Oauth2 - Fatal编程技术网

Spring OAuth2开放ID客户端身份验证,后跟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服务

我们的应用程序目前使用OAuth OpenID连接身份验证和外部(第三方)服务器进行设置。需求是使用从LDAP加载用户(以及权限/角色)的用户详细信息服务来完成身份验证。因此,
authentication.getPrincipal()
应该返回我们使用的自定义UserDetails对象,该对象是通过使用从开放ID身份验证获得的用户名查询LDAP生成的

我尝试了以下方法:

  • 但在答案中,它似乎正在设置服务器端,而且也不起作用
  • 已尝试在WebSecurity配置中添加自定义UserDetails服务
    @配置
    公共类OAuth2Config扩展了WebSecurity配置适配器{
    @凌驾
    受保护的无效配置(HttpSecurity http)引发异常{
    http.oauth2Login()和().userDetailsService(myCustomUserDetailsService());
    }
    }
    
    其中myCustomUserDetailsService()处理对LDAP的调用并获取用户详细信息,包括权限。

我不太熟悉spring oauth2框架,如果我错了请纠正我:我猜我需要实现自己的用户信息端点来调用LDAP,而不是OpenID服务提供给我的用户信息端点?

没有我希望的那么干净,但我在InteractiveAuthenticationSuccessEvent上注册了一个应用程序侦听器,并在登录后手动更新了身份验证(类似于帖子的答案)

如果有人有更好的建议


更新:身份提供商同意在他们的声明中包含LDAP信息,这样我就可以通过令牌直接获取,而无需回拨(目前仍在讨论中)。也就是说,拥有一个auth success回调应用程序侦听器是我解决这个问题的唯一方法。

您可以在安全过滤器链中添加一个新的过滤器。第二个过滤器可以从用户的身份验证和查询中检索主体/名称

就像两步认证一样