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()。该方法调用 clientDetailsService.loadClientbyClientId()。
我的问题是,我应该在资源服务器中注册 ClientDetailsService 吗?根据 Spring OAuth 开发者指南,我认为 ClientDetialsService 只需要授权服务器实现。
谢谢!
【问题讨论】:
【参考方案1】:在OAuth2AuthenticationManager.checkClientDetails()
中,如果clientDetailsService
为空,它只是和平返回,不做任何事情。因此,可以将clientDetailsService
保留为默认值。
如果不为空,身份验证管理器将检查从clientDetailsService.loadClientByClientId()
返回的客户端详细信息是否允许请求的范围。
Spring 提供InMemoryClientDetailsService
和JdbcClientDetailsService
。在我看来,第一个只能在同一站点中组合身份验证服务器和资源服务器时使用。第二个需要从资源服务器到数据库的 jdbc 连接,身份验证服务器用于存储客户端详细信息。
最好的解决方案可能是实现 RemoteClientDetailsService
以从自定义身份验证服务器端点(如 /oauth/check_client)获取客户端详细信息,就像 RemoteTokenServices
剂量一样。
【讨论】:
以上是关于spring-security-oauth2 - 从资源服务器检查ClientDetails的主要内容,如果未能解决你的问题,请参考以下文章
spring-security-oauth2中的HttpSecurity配置问题
如何处理 spring-security-oauth2 的版本升级?
Spring-Security-Oauth2:默认登录成功 url
spring-security-oauth2 2.0.7 刷新令牌 UserDetailsService 配置 - UserDetailsService 是必需的