Spring OAUTH:覆盖CheckTokenEndpoint'check_token?token ='响应映射

时间:2017-11-21 05:04:42

标签: spring spring-mvc spring-security oauth spring-security-oauth2

我想覆盖CheckTokenEndpoint以提供我自己的自定义输出作为Map到资源服务器。我尝试了以下,但没有工作。

  1. 为(/ oauth / check_token)引入新的自定义控制器,但Spring拒绝此自定义并注册其自定义。
  2.   

    使用a覆盖bean'checkTokenEndpoint'的bean定义   不同的定义:替换[Generic bean:class   [com.datami.auth.security.CheckTokenEndpoint];范围=单;   抽象= FALSE; lazyInit = FALSE; autowireMode = 0; dependencyCheck = 0;   autowireCandidate = TRUE;初级= FALSE; factoryBeanName = NULL;   factoryMethodName = NULL; initMethodName = NULL; destroyMethodName = NULL;   在文件中定义   [/usr/local/Cellar/tomcat/8.5.5/libexec/webapps/oauth-server/WEB-INF/classes/com/datami/auth/security/CheckTokenEndpoint.class]]   用[Root bean:class [null];范围=;抽象= FALSE; lazyInit = FALSE;   autowireMode = 3; dependencyCheck = 0; autowireCandidate = TRUE;   初级= FALSE;   factoryBeanName = org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerEndpointsConfiguration;   factoryMethodName = checkTokenEndpoint; initMethodName = NULL;   destroyMethodName =(推断);在类路径资源中定义   [组织/ springframework的/安全/的oauth2 /配置/注解/网络/配置/ AuthorizationServerEndpointsConfiguration.class]]

    1. 使用(/oauth/check_custom_token)创建了我自己的端点但不确定自动装配下面的resourceServerTokenServices,@ usowire对我没有帮助。

      @autowire
      private ResourceServerTokenServices resourceServerTokenServices;

    2. Spring已使用DefaultTokenServices自动启用此功能。

      我也可以在我的代码中创建new DefaultTokenServices(),但是如何在DefaultTokenServices内部自动装配?再次出现同样的问题。

      private TokenStore tokenStore;
      
      private ClientDetailsService clientDetailsService;
      
      private TokenEnhancer accessTokenEnhancer;
      
      private AuthenticationManager authenticationManager; 
      

      Coul,请你帮帮我。

1 个答案:

答案 0 :(得分:2)

CheckTokenEndpoint取决于其accessTokenConverter实例来创建并返回地图。

您可以创建自定义AccessTokenConverter(如果需要,可以从OOTB DefaultAccessTokenConverter扩展)并像这样使用它:

@Configuration
@EnableAuthorizationServer
public class MyAuthConfig extends AuthorizationServerConfigurerAdapter {

    ...

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints.accessTokenConverter(new MyAccessTokenConverter())...

        ....

当然,您可能希望使用工厂方法来创建accessTokenConverter实例,这允许您将一些属性注入实例等。

完成后,在AuthorizationServerEndpointsConfiguration.checkTokenEndpoint内你可以看到你在上面设置的accessTokenConverter将传递给CheckTokenEndpoint的OOTB实例并用于创建地图。