Служба базовой аутентификации под названием By Zuul

Я Zuul в качестве пограничного сервера. поэтому все запросы проходят мимо этого пограничного сервера. У меня есть микросервис A. Все веб-сервисы A защищены базовой аутентификацией. Как мы можем вызвать услуги A b, проходящие через прокси Zuul? Должен ли я добавлять заголовок для сообщений?


person youssef Liouene    schedule 18.02.2016    source источник


Ответы (6)


В идеале запрашивающий должен иметь токен в запросе.
Если вы хотите, чтобы Zuul добавил токен аутентификации, вы можете создать ZuulFilter и использовать:

context.addZuulRequestHeader("Authorization", "base64encodedTokenHere");

Это дало бы открытый доступ к сервисам, что может быть неразумно.

person ianc    schedule 19.02.2016

Это мой фильтр Zuul:

public class BasicAuthorizationHeaderFilter 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();
    ctx.getRequest().getRequestURL();
    ctx.addZuulRequestHeader("Authorization", "Basic " + Utils.getBase64Credentials("user", "Token"));
    return null;
}

}
person youssef Liouene    schedule 19.02.2016

Вы можете вызвать (через Zuul) свой сервис A следующим образом:

https://login:[email protected]/serviceA

но сначала разрешите заголовок AUTHORIZATION через Zuul для этой конкретной службы (маршрута) со свойством sensitiveHeaders в вашем файле свойств:

zuul.routes.serviceA.sensitiveHeaders=Cookie,Set-Cookie

или оставьте его пустым, если вы хотите также передать заголовки Cookie.

Подробнее о заголовках через Zuul

person redoff    schedule 07.06.2018

Используйте свойство чувствительного заголовка zuul с пустым значением,

zuul.sensitiveHeaders=

Свойство выше поможет, но если вы хотите иметь фильтры для заголовков Cookie, вы можете использовать это свойство со значениями,

zuul.sensitiveHeaders=Cookie,Set-Cookie
person Rohit Dubey    schedule 31.10.2018

Это изменение немного сложно.

@Override
public int filterOrder() {
    return 1; // change the return value to more than 5 the above code will work.
}

попробуйте с окончательным кодом ниже:

@Component
public class PreFilter extends ZuulFilter {
    private static final Logger LOG = LoggerFactory.getLogger(PreFilter.class);

    @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();
        HttpServletRequest request = ctx.getRequest();
        ctx.addZuulRequestHeader("Authorization", request.getHeader("Authorization"));
        return null;
    }
}
person shubhranshu    schedule 22.02.2019

person    schedule
comment
Пожалуйста, удалите ненужный код в своем ответе и добавьте краткое объяснение. - person msitt; 26.04.2017