OAuth2 Open ID 客户端身份验证,然后是 LDAP 用户详细信息和权限

OAuth2 Open ID client authentication followed by LDAP user details & authorities

我们的应用程序当前设置有 OAuth OpenID 连接身份验证与外部(第三方)服务器。要求是使用从 LDAP(以及 authorities/roles)加载用户的用户详细信息服务来完成身份验证。所以 authentication.getPrincipal() 应该返回我们使用的自定义 UserDetails 对象,该对象是通过使用从 Open ID 身份验证获得的用户名查询 LDAP 生成的。

我试过以下方法:

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

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

谁有更好的建议?

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

您可以在安全过滤器链中紧接着添加一个新过滤器。第二个过滤器可以从用户身份验证和查询中检索 principal/name。

像两步验证