Sen süzgeçten geçirilmesi gerekir. Bir zuul öncesi filtresi ihtiyacınız olan şeydir. Filtrenizdeki yetkili sunucunuza erişebilir ve belirteç geçersizse, mikro servisinizi aramaz ve hemen bir yanıt vermezsiniz. Geçerliyse, isteğin mikro hizmetlere gitmesine izin verirsin.
örneği filtre sınıfı:
public class AuthFilter extends ZuulFilter {
@Autowired
RestTemplate restTemplate;
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 1;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
//get your token from request context and send it to auth service via rest template
boolean validToken = restTemplate.exchange(or getForObject or other methods of restTemplate which you find suitable for method and return type of your auth service controller method)
if(!validToken) {
ctx.setSendZuulResponse(false); //This makes request not forwarding to micro services
ctx.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value());
ValidationResponse validationResponse = new ValidationResponse();
validationResponse.setSuccess(false);
validationResponse.setMessage("Invalid Access...");
ObjectMapper mapper = new ObjectMapper();
String responseBody = mapper.writeValueAsString(validationResponse);
ctx.setResponseBody(validationResponse);
ctx.getResponse().setContentType("application/json");
//If you want to do any thing else like logging etc, you can do it.
}
return null;
}
}
imzalı güvenebileceğiniz belirteci sizin accessToken değil mi? –
Yay güvenliği bunu doğru şekilde yapmanın yoludur. Arayan kişinin proxy'nizi dolaşmasına ve doğrudan mikro havzaya girmesinin bir yolu olmadığının farkında olmanız durumunda bunu yapmalısınız. –
@Andy Brown, ayrıntılı bilgi verebilir misiniz? – Krish