Zuul向下游应用程序发送基本身份验证



我有一个Spring Boot Microservice,它需要基本的身份验证数据,即固定的用户ID/密码(例如admin/password)。我正在使用春季云Netflix生态系统来协调微服务。 Zuul 是我的API网关。

我的问题如何从Zuul发送基本身份验证详细信息到我的应用程序,以便通过Zuul访问Zuul时,它不会要求使用UserId/password。

您可以添加自定义过滤器并将授权标头添加到请求中。
授权标题仅为基本64编码的"用户名:密码"字符串。

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才能将其捡起。因此,在您的配置类/主应用程序类中,添加:

@Bean
public AuthenticatedFilter getAuthenticatedFilter () {
    return new AuthenticatedFilter();
}

相关内容

最新更新