如何在春季使用 OIDC 从授权服务器获取所有用户?

Posted

技术标签:

【中文标题】如何在春季使用 OIDC 从授权服务器获取所有用户?【英文标题】:How to get all users from an authorization server using OIDC in spring? 【发布时间】:2019-04-28 01:44:36 【问题描述】:

我有一个使用 OIDC (oauth2) 进行身份验证的 spring-boot 应用程序,我正在尝试从授权服务器获取所有用户的列表 - 我应该如何使用 spring 来实现它?

【问题讨论】:

【参考方案1】:

Spring Security OAuth2 没有用于表达用户存储库的 API。它确实有一个UserDetailsService 接口,但你会注意到它只有loadUserByUsername 方法。

如果您正在构建 OAuth 2 授权服务器,您可以查看 Spring Data 和 Spring MVC 以公开查询端点(使用 Spring Security 来保护该端点)。

如果您正在构建与第三方授权服务器通信的 OAuth 2 资源服务器或客户端,您可以查看 RestTemplateWebClient 来制定您的授权服务器想要的任何专有查询,因为像 @ Ronald 说,查询用户没有 OAuth 2.0 标准。

【讨论】:

【参考方案2】:

当用户登录到他的身份提供者时,他的个人信息可以通过身份令牌包含的声明来访问。或者通过接近 userinfo 端点。

没有根据 OIDC 标准从授权服务器返回所有用户的端点。

【讨论】:

以上是关于如何在春季使用 OIDC 从授权服务器获取所有用户?的主要内容,如果未能解决你的问题,请参考以下文章

如何在春季启动中从未经授权的响应中删除变量

OAuth2.0和OIDC详解

在春季实施授权代码授权时出现的问题

如何使用 Spring 从 id_token 创建用户?

[认证授权] 5.OIDC(OpenId Connect)身份认证授权(扩展部分)

Quarkus:集成测试 - 如何模拟 OIDC?