Téléchargements JWK distants de jose4j via un proxy HTTP
Associez une instance Get compatible proxy à HttpsJwks et conservez l'instance de jeu de clés configurée pour son cache et ses actualisations ultérieures.
Le chargeur distant de jeu de clés de jose4j possède son propre objet de récupération HTTP. Configurez cet objet lorsque l'application peut appeler une API mais ne peut pas télécharger les JSON Web Keys de l'émetteur.
L'API jose4j 0.9.6 expose Get.setHttpProxy et 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);Utilisez cet objet jwks configuré dans le dispositif de résolution des clés de l'application. Le créer à côté d'un résolveur existant ne modifie pas l'autre instance de ce résolveur.
Get utilise URL et HttpsURLConnection. Le Proxy explicite est transmis à URL.openConnection(Proxy) ; cela limite la route à ce chargeur au lieu d'exiger une nouvelle politique de proxy à l'échelle de la JVM. L'authentification du proxy, si nécessaire, relève d'un autre aspect du transport. Une URL d'émetteur approuvée et accessible publiquement peut utiliser une adresse HTTP de la liste de proxys HTTP lorsque des intermédiaires publics sont autorisés et qu'aucun compte de proxy n'est configuré.
HttpsJwks met les clés en cache par instance, selon les en-têtes de cache et son réglage de durée de cache par défaut. Conservez l'instance pour en tirer ce bénéfice. Une clé déjà en cache peut permettre à la validation de continuer sans solliciter le réseau, tandis qu'une récupération ou une actualisation ultérieure dépend toujours de la route configurée.
Ceci configure la récupération des clés. La validation du jeton a toujours besoin de la politique habituelle de l'application pour la signature, l'émetteur, l'audience et les autres contrôles ; obtenir un jeu de clés JSON ne réalise pas ces vérifications à lui seul.