spring-security-oauth2 - 从资源服务器检查ClientDetails

Posted

技术标签:

【中文标题】spring-security-oauth2 - 从资源服务器检查ClientDetails【英文标题】:spring-security-oauth2 - checkClientDetails from Resource Server 【发布时间】:2017-12-15 19:51:55 【问题描述】:

我正在使用 spring-security-oauth2-2.0.10.RELEASE 开发 OAuth 2.0 资源服务器应用程序。我能够将资源保护到特定范围,但注意到当 spring-security-oauth2 通过 OAuth2AuthenticationProcessingFilter 运行时,它最终会执行 OAuth2AuthenticationManager.checkClientDetails()。该方法调用 clientDetailsS​​ervice.loadClientbyClientId()。

我的问题是,我应该在资源服务器中注册 ClientDetailsS​​ervice 吗?根据 Spring OAuth 开发者指南,我认为 ClientDetialsService 只需要授权服务器实现。

谢谢!

【问题讨论】:

【参考方案1】:

OAuth2AuthenticationManager.checkClientDetails() 中,如果clientDetailsService 为空,它只是和平返回,不做任何事情。因此,可以将clientDetailsService 保留为默认值。

如果不为空,身份验证管理器将检查从clientDetailsService.loadClientByClientId() 返回的客户端详细信息是否允许请求的范围。

Spring 提供InMemoryClientDetailsServiceJdbcClientDetailsService。在我看来,第一个只能在同一站点中组合身份验证服务器和资源服务器时使用。第二个需要从资源服务器到数据库的 jdbc 连接,身份验证服务器用于存储客户端详细信息。

最好的解决方案可能是实现 RemoteClientDetailsService 以从自定义身份验证服务器端点(如 /oauth/check_client)获取客户端详细信息,就像 RemoteTokenServices 剂量一样。

【讨论】:

以上是关于spring-security-oauth2 - 从资源服务器检查ClientDetails的主要内容,如果未能解决你的问题,请参考以下文章

spring-security-oauth2中的HttpSecurity配置问题

如何处理 spring-security-oauth2 的版本升级?

spring-security-oauth2 替代品

Spring-Security-Oauth2:默认登录成功 url

spring-security-oauth2 2.0.7 刷新令牌 UserDetailsS​​ervice 配置 - UserDetailsS​​ervice 是必需的

spring-security-oauth2注解详解