代码之家  ›  专栏  ›  技术社区  ›  Debopam

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

  •  5
  • Debopam  · 技术社区  · 8 年前

    祖鲁 是我的API网关。

    我的问题是,如何从Zuul向我的应用程序发送基本的身份验证详细信息,以便在通过Zuul访问时,它不会要求用户ID/密码。

    1 回复  |  直到 8 年前
        1
  •  3
  •   rj2700    8 年前

    您可以添加自定义筛选器,并将授权标头添加到请求中。
    授权头是简单的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();
    }
    
    推荐文章