O carregador remoto de conjuntos de chaves do jose4j tem o seu próprio objeto de obtenção HTTP. Configure esse objeto quando a aplicação consegue chamar uma API mas não consegue transferir as JSON Web Keys do emissor.

A API do jose4j 0.9.6 expõe Get.setHttpProxy e HttpsJwks.setSimpleHttpGet:

org.jose4j.http.Get downloader = new org.jose4j.http.Get();
downloader.setHttpProxy(new java.net.Proxy(
    java.net.Proxy.Type.HTTP,
    new java.net.InetSocketAddress("proxy.example", 8080)));
downloader.setConnectTimeout(5000);
downloader.setReadTimeout(15000);

org.jose4j.jwk.HttpsJwks jwks = new org.jose4j.jwk.HttpsJwks(
    "https://issuer.example/keys");
jwks.setSimpleHttpGet(downloader);

Utilize este objeto jwks configurado no esquema de resolução de chaves da aplicação. Criá-lo ao lado de um resolvedor existente não altera a outra instância desse resolvedor.

Get usa URL e HttpsURLConnection. O Proxy explícito é passado a URL.openConnection(Proxy); isso limita a rota a este carregador em vez de exigir uma nova política de proxy para toda a JVM. A autenticação do proxy, se necessária, é uma questão de transporte adicional. Um URL de emissor aprovado e acessível publicamente pode usar um endereço HTTP da lista de proxies HTTP quando intermediários públicos são permitidos e não existe conta de proxy configurada.

O HttpsJwks coloca as chaves em cache por instância, com base nos cabeçalhos de cache e na definição de duração predefinida. Mantenha a instância para obter esse benefício. Uma chave já em cache pode permitir que a validação continue sem usar a rede, enquanto uma obtenção ou atualização posterior continua dependente da rota configurada.

Isto configura a obtenção de chaves. A validação do token continua a precisar da política normal da aplicação para assinatura, emissor, audiência e outras verificações; obter um conjunto de chaves JSON por si só não realiza essas verificações.

Artigos relacionados