Spring Zuul Eureka Security Authentication получает информацию о пользователе от Zuul

Я использую @EnableOAuth2Sso для аутентификации пользователя на стороннем сервере аутентификации на сервере Zuul. Мне нужно передать информацию о пользователе из Zuul на маршрутизируемые серверы. Я настроил конечную точку запроса /userinfo для возврата jsonified-представления сглаженной версии информации о пользователе от третьей стороны. Как передать эту информацию о пользователе на один из серверов ресурсов?

Что я уже пробовал:

Я попытался сделать запрос, используя файл @LoadBalanced @Bean RestTemplate. Однако меня перенаправляют к третьей стороне для авторизации. Для sensitive-headers установлено значение none. Я проверил, через какие заголовки проходили:

["upgrade-insecure-requests","user-agent","accept","accept-language","cookie",
"authorization","x-forwarded-host","x-forwarded-proto",
"x-forwarded-prefix","x-forwarded-port","x-forwarded-for","accept-encoding",
"content-length", "host","connection"]

Итак, затем я попытался использовать @LoadBalanced @Bean OAuth2RestTemplate. Мне пришлось установить конфигурацию security.basic.enabled=false, чтобы предотвратить появление запроса на вход в систему для аутентификации пользователя. Это производит UserRedirectRequiredException

Сервер ресурсов

@RequestMapping(value = "/test", method = RequestMethod.GET)
    public ResponseEntity<String> test3() {
    return restTemplate.getForEntity("http://zuul-server/userinfo", String.class);
}

Зуул Сервер

@RequestMapping(value = "/userinfo", produces = MediaType.APPLICATION_JSON_VALUE)
public User getInfo(OAuth2Authentication auth) {
    return service.getUser(auth); // Returns User Object
}

Дополнительные примечания

Сервер ресурсов не был помечен @EnableResourceServer. Если это так, перенаправленный запрос приведет к сообщению об ошибке Invalid access token.


person George    schedule 17.07.2017    source источник


Ответы (1)


Это то, что я работаю над нашей системой для передачи токенов Oauth2 JWT.

@Configuration
@EnableResourceServer
public class JwtSecurityConfig extends ResourceServerConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/oauth/**").permitAll()
            .antMatchers("/**").hasAuthority("ROLE_API")
            .and()
            .csrf().disable();
    }
   }

И часть конфигурации, которая может вам понадобиться.

services:
  path: /services/**
  serviceId: services
  stripPrefix: false
  sensitiveHeaders: true
auth:
  path: /oauth/**
  serviceId: saapi-auth-server
  stripPrefix: false
  sensitiveHeaders: true

Документов по этому поводу было очень мало. Так что на самом деле это был просто взлом, пока я не смог заставить его передавать токены.

person Eric Goode    schedule 02.02.2018