Spring Zuul Oauth2 Шлюз / Сервер ресурсов - PullRequest
0 голосов
/ 03 мая 2018

Можно ли использовать Zuul в качестве "фальшивого" сервера ресурсов, проверяя область OAuth2 перед возвратом содержимого прокси?

Что-то вроде:

incoming request (with token) -> Zuul proxy + resource server -> internal API (insecure)

После этого внутренняя служба API может быть освобождена от любых проблем безопасности, а прокси-служба Zuul выступает в качестве шлюза. Все вышеперечисленное относится к приложениям Spring, если это имеет значение.

1 Ответ

0 голосов
/ 07 мая 2018

абсолютно

вы также должны настроить конфигурацию для сервера ресурсов Создайте bean-компонент ResourceServerConfig, который расширяет ResourceServerConfigurerAdapter и переопределяет метод конфигурации (безопасность HttpSecurity). Аннотируйте его аннотацией @EnableResourceServer.

как то так

@Configuration
@EnableResourceServer
public class OAuth2ResourceServerConfig extends ResourceServerConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
                .and()
                .authorizeRequests()
                // .antMatchers("/swagger*", "/v2/**")
                // .access("#oauth2.hasScope('read')")
                .anyRequest()
                .permitAll();
    }

    @Bean
    @Primary
    public DefaultTokenServices tokenServices() {
        DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
        defaultTokenServices.setTokenStore(tokenStore());
        return defaultTokenServices;
    }

    @Bean
    public TokenStore tokenStore() {

        return new JwtTokenStore(accessTokenConverter());
    }

    @Bean
    public JwtAccessTokenConverter accessTokenConverter() {
        JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
         converter.setSigningKey("123");

//        Resource resource = new ClassPathResource("publicKey.txt");
//        String publicKey = null;
//
//        try {
//            publicKey = IOUtils.toString(resource.getInputStream(), Charset.defaultCharset());
//        } catch (final IOException e) {
//            throw new RuntimeException(e);
//        }
//        converter.setVerifierKey(publicKey);
        return converter;
    }
}
...