您可以添加自定义筛选器,并将授权标头添加到请求中。
授权头是简单的base64编码的“用户名:密码”字符串。
public class AuthenticatedFilter extends ZuulFilter {
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 10;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
String auth = "username" + ":" + "password";
byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(Charset.forName("ISO-8859-1")));
String authValue = "Basic " + new String(encodedAuth);
ctx.addZuulRequestHeader(HttpHeaders.AUTHORIZATION, authValue);
return null;
}
}
编辑:您还需要为这个过滤器创建bean,让Zuul来提取它。因此,在您的配置类/主应用程序类中,添加:
@Bean
public AuthenticatedFilter getAuthenticatedFilter () {
return new AuthenticatedFilter();
}