Bộ nạp bộ khóa từ xa của jose4j có đối tượng truy xuất HTTP riêng. Cấu hình đối tượng đó khi ứng dụng có thể gọi API nhưng không thể tải xuống JSON Web Keys của nhà phát hành.

API của jose4j 0.9.6 cung cấp Get.setHttpProxy và 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);

Dùng đối tượng jwks đã cấu hình này trong sơ đồ phân giải khóa của ứng dụng. Việc tạo nó bên cạnh một bộ phân giải hiện có không thay đổi phiên bản khác của bộ phân giải đó.

Get dùng URL và HttpsURLConnection. Proxy tường minh được truyền cho URL.openConnection(Proxy); điều này giới hạn tuyến trong bộ nạp này thay vì đòi hỏi một chính sách proxy mới cho toàn bộ JVM. Xác thực proxy, nếu cần, là một vấn đề vận chuyển bổ sung. Một URL nhà phát hành đã được phê duyệt và công khai có thể dùng địa chỉ HTTP từ danh sách proxy HTTP khi cho phép trung gian công cộng và không cấu hình tài khoản proxy.

HttpsJwks lưu khóa vào bộ nhớ đệm theo từng phiên bản, dựa trên tiêu đề bộ nhớ đệm và cài đặt thời lượng mặc định. Giữ phiên bản để có lợi ích đó. Một khóa đã được lưu đệm có thể cho phép quá trình xác thực tiếp tục mà không dùng mạng, trong khi lần truy xuất hoặc làm mới sau đó vẫn phụ thuộc vào tuyến đã cấu hình.

Điều này cấu hình việc truy xuất khóa. Việc xác thực token vẫn cần chính sách xác thực thông thường của ứng dụng cho chữ ký, nhà phát hành, đối tượng và các kiểm tra khác; chỉ lấy một bộ khóa JSON không thực hiện các kiểm tra đó.

Bài viết liên quan