Как проверить множественный access_token с другим (настраиваемым) заголовком http, используя конфигурации ResourceServer? - PullRequest
0 голосов
/ 18 марта 2020

У меня есть ниже config для проверки access_token из запроса Использование сервера ресурсов API. У меня есть требование для проверки другого access_token, который был установлен в настраиваемом заголовке (Authorization_custom = Bearer blabla ....). Как мне сделать это, используя приведенную ниже конфигурацию для проверки обоих токенов один за другим?

в качестве первого приоритета - проверка заголовка по умолчанию «Authorization: Bearer ....», а во-вторых, проверка пользовательского заголовка «Authorization_custom: Носитель .... »с использованием того же ресурса сервера. Это вообще возможно?

@Configuration
@EnableResourceServer
public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {

    @Autowired
    public Environment env;

    @Override
    public void configure(ResourceServerSecurityConfigurer resources) {
        resources.resourceId("sample");
        RemoteTokenServices tokenServices = new RemoteTokenServices();
        tokenServices.setCheckTokenEndpointUrl(sampleResource().getTokenInfoUri());
        tokenServices.setClientId(sampleClient().getClientId());
        tokenServices.setClientSecret(sampleClient().getClientSecret());
        resources.tokenServices(tokenServices);
        resources.authenticationEntryPoint(authenticationEntryPoint());
    }

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers(env.getProperty("some.web.base-path") + "/some",
                .permitAll().antMatchers("/**")
                .authenticated();
    }

    /** Access the configuration for the token service. */
    @Bean
    @ConfigurationProperties("some.oauth2.client")
    public AuthorizationCodeResourceDetails sampleClient() {
        return new AuthorizationCodeResourceDetails();
    }

    /** Access the configuration for the token validation. */
    @Bean
    @ConfigurationProperties("some.oauth2.resource")
    public ResourceServerProperties sampleResource() {
        return new ResourceServerProperties();
    }

}

app.yml

some:
    oauth2
      client:
        clientId: some_resource
        clientSecret: some_pass
        accessTokenUri: some_uri
        userAuthorizationUri: some_uri
        tokenName: Bearer
        authenticationScheme: header
        clientAuthenticationScheme: header
        scope:
          - email
      resource:
        userInfoUri: some_uri
        tokenInfoUri: some_uri
...