Senhores, tenho uma aplicação Spring boot na qual estou utilizando RestTemplate para realizar requisições em alguns clients, nessa aplicação coloquei uma classe interceptor para logar dados da request inicio/fim realizadas pelo client.
Problema: Imaginando que eu tenha as seguintes URL’s:
/api/recurso/{cpf}
/api/recurso/{cnpj}
Eu precisaria ofuscar parcialmente os documentos que aparecem no path.
Atualmente a aplicação faz o log da seguinte forma:
/api/recurso/[telefone removido]
/api/recurso/00000000000191
Gostaria que o log ficasse desta forma:
/api/recurso/******00191
/api/recurso/********000191
Para isso criei uma classe que faz este trabalho:
@UtilityClass
public class UriUtils {
private static String REGEX_CPF_CNPJ = "((\\d{14})$)|((\\d{11})$)";
public static String pathOfuscator(String path) {
Matcher matcher = Pattern.compile(REGEX_CPF_CNPJ).matcher(path);
if (matcher.find()) {
if (matcher.group().length() == 11) {
path = path.substring(0, path.length() - 11);
path += "******".concat(matcher.group().substring(6, 11));
}
if (matcher.group().length() == 14) {
path = path.substring(0, path.length() - 14);
path += "********".concat(matcher.group().substring(8, 14));
}
}
return path;
}
}
Porém imaginando o seguinte cenário onde as URL’s fossem da seguinte forma:
/api/recursopai/{cpf}/recursofilho/{cnpj}
A minha classe já não atenderia, como eu poderia modelar a classe para que ela conseguisse ofuscar documentos no path para qualquer URL?