通过OAuth2.0中的“令牌服务”设置访问令牌的有效性

时间:2018-12-29 22:05:00

标签: spring spring-security spring-security-oauth2

我正在使用spring和jwt令牌熟悉oauth2.0 tutorial。我想知道tokenServices()类中SecurityConfig的角色。我的问题是,当我通过以下方式将访问令牌有效性设置为30s时,defaultTokenServices.setAccessTokenValiditySeconds(30);不起作用。在AbstractTokenGranter中,自动连线的AuthorizationServerTokenServices bean是DefaultTokenServices,但设置了默认的43200s值(不是30)。但是,当我通过ClientDetailsServiceConfigurerconfigurer.accessTokenValiditySeconds(30)上直接设置它时,它可以工作。

问题是为什么设置access token validity在这里起作用:

@Override
    public void configure(ClientDetailsServiceConfigurer configurer) throws Exception {
        configurer
                .inMemory()
                .withClient(clientId)
                .secret(passwordEncoder.encode(clientSecret))
                .authorizedGrantTypes(grantType)
                .scopes(scopeRead, scopeWrite)
                .resourceIds(resourceIds)
                .accessTokenValiditySeconds(30);
    }

但不在这里:

@Bean
    @Primary
    public DefaultTokenServices tokenServices() {
        final DefaultTokenServices defaultTokenServices = new DefaultTokenServices();

        defaultTokenServices.setTokenStore(tokenStore());
        defaultTokenServices.setSupportRefreshToken(true);
        defaultTokenServices.setAccessTokenValiditySeconds(30);

        return defaultTokenServices;
    }

根据this post中的@DeezCashews答案,它应该在两个地方都有效。

0 个答案:

没有答案