2017-02-01 119 views
1

我想使用Spring Cloud Zuul作爲api /身份驗證網關。我已成功實現了zuul後面的服務的持票人令牌授權,並且我成功將Zuul轉發給我的表單登錄並路由回到我的應用程序,但我無法讓Zuul將不記名令牌傳遞給服務。春雲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了。