【问题标题】:spring-security-oauth2 - checkClientDetails from Resource Serverspring-security-oauth2 - 从资源服务器检查ClientDetails
【发布时间】: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 只需要授权服务器实现。

谢谢!

【问题讨论】:

    标签: spring-security-oauth2


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-12-21
      • 2019-11-27
      • 2017-03-25
      • 2018-08-17
      • 2018-07-08
      • 2021-10-29
      • 2020-10-28
      • 2018-07-15
      • 2017-03-29
      相关资源
      最近更新 更多