var transport = reactor.netty.http.client.HttpClient.create()
    .proxy(spec -> spec
        .type(reactor.netty.transport.ProxyProvider.Proxy.HTTP)
        .host("proxy.example")
        .port(8080));
var webClient = org.springframework.web.reactive.function.client.WebClient
    .builder()
    .clientConnector(new org.springframework.http.client.reactive
        .ReactorClientHttpConnector(transport))
    .build();

var decoder = org.springframework.security.oauth2.jwt.NimbusReactiveJwtDecoder
    .withJwkSetUri(jwkSetUri)
    .webClient(webClient)
    .build();
decoder.setJwtValidator(org.springframework.security.oauth2.jwt.JwtValidators
    .createDefaultWithIssuer(issuer));

Dùng các giá trị jwkSetUri/issuer đáng tin cậy và cài bộ giải mã này qua bean ReactiveJwtDecoder thực tế hoặc cấu hình máy chủ tài nguyên tường minh. Tạo nó bên cạnh một bộ giải mã đang hoạt động không thay đổi không làm thay đổi việc lấy khóa. Nếu URL JWKS đáng tin cậy là công khai và cho phép trung gian công cộng, danh sách proxy HTTP cung cấp ứng viên cho host và cổng của đường truyền không cần tài khoản.

Bộ xác thực được hiển thị giữ các kiểm tra thời gian mặc định và xác thực issuer. Giữ các yêu cầu audience và mọi bộ xác thực bổ sung của ứng dụng khi thay bộ giải mã.

URI khóa đã biết bỏ qua bước khám phá để định vị nó. Nếu thành phần khác vẫn thực hiện khám phá hoặc lấy token, hãy cấu hình tuyến của client đó riêng.

Phần này bao quát việc xác minh JWT phản ứng trên máy chủ tài nguyên. Máy chủ tài nguyên Servlet, đăng nhập OAuth2 và client API doanh nghiệp có các điểm móc khác; giữ URL khóa thất bại và giai đoạn cùng với quá trình điều tra.

Bài viết liên quan