2017-02-01 2 views
1

Я пытаюсь использовать Spring Cloud Zuul в качестве шлюза api/authentication. Я успешно выполнил авторизацию токена на предъявителя для моей службы за zuul, и я успешно перевел Zuul на мою регистрацию формы и перенаправил обратно в мое приложение, но я не могу заставить Zuul передать токен-носитель на службу.Spring Cloud Zuul не поддерживает токен доступа

конфигурации

Мой Zuul выглядит следующим образом:

@EnableEurekaClient 
@EnableZuulProxy 
@SpringBootApplication 
@RestController 
public class Application { ... } 

Моя конфигурация службы выглядит следующим образом:

@Profile("oauth") 
@Configuration 
@EnableResourceServer 
@EnableWebSecurity 
public static class InternalApiGatewayConfig extends ResourceServerConfigurerAdapter { 

Когда мой Угловая приложение пытается получить доступ к моей службы через Zuul, я получаю

{"error":"unauthorized","error_description":"Full authentication is required to access this resource"} 

Мне удалось обойти эту проблему, поставив следующий код в ZuulFilter, но это не кажется правильным:

Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); 
    OAuth2AuthenticationDetails details = (OAuth2AuthenticationDetails)authentication.getDetails(); 
    String tokenValue = details.getTokenValue(); 
    ctx.addZuulRequestHeader("Authorization", "bearer " + tokenValue); 

Я понимаю, что Zuul должен автоматически отправлять значение токена-носителя. Что мне не хватает?

ответ

0

Итак, я понял ответ на свой вопрос, и это было больно просто. Мой проект импортирован spring-security-oauth2. Мне просто нужно было добавить зависимость от spring-cloud-security. При этом мне не пришлось реализовывать ZuulFilter вообще.

Смежные вопросы