2016-08-04 71 views
0

我们在春季云中使用zuul作为API网关。现在我们要从zuul中提取访问令牌以供进一步实现。请提供建议我们如何实现。谢谢从Spring云zuul API网关获取AccessToken

+0

你可以让zuul做认证。一些链接让你开始https://jmnarloch.wordpress.com/2015/10/21/spring-cloud-eureka-zuul-and-oauth2-scaling-out-授权服务器/ http://presos.dsyer.com/decks/microservice-security.html#slide25 –

+0

嗨Grinish,感谢您的回复,我们已经实现了身份验证,但我们希望在我们的应用程序中为用户管理提供访问令牌。我们希望提取访问令牌并将其存储在redis会话中以供进一步实施。请提供建议。谢谢。 –

+1

如果我正确理解您的问题,您必须拥有某种您可以在zuul中读取的授权标头,并将访问令牌从那里传递给下游服务。要读取它并将其发送到下游,您将需要使用pre zuul过滤器。 –

回答

1

要阅读授权标题,您需要在ZUUL中创建一个过滤器,我认为您需要一个预过滤器,您可以根据需要更改它。这是你需要的。

public class TestFilter extends ZuulFilter { 

@Override 
public boolean shouldFilter() { 

    return true; 
} 

@Override 
public Object run() { 

    final RequestContext ctx = RequestContext.getCurrentContext(); 
    final HttpServletRequest request = ctx.getRequest(); 
//Here is the authorization header being read. 
    final String xAuth = request.getHeader("Authorization"); 
//Use the below method to add anything to the request header to read downstream. if needed. 
    ctx.addZuulRequestHeader("abc", "abc"); 

    return null; 
} 

@Override 
public String filterType() { 

    return "pre"; 
} 

@Override 
public int filterOrder() { 

    return 1; 
} 

} 

您将需要一个@Bean声明过滤器类中,你必须@EnableZuulProxy

@Bean 
public TestFilter testFilter() { 
    return new TestFilter(); 
} 

希望这有助于。!