Jetty 12.0.x SPNEGO: Đặt tên dịch vụ, không phải principal đầy đủ
Tách URI proxy, người dùng JAAS và thành phần dịch vụ GSS khi cấu hình xác thực Jetty 12.
Trong cấu hình SPNEGO của Jetty có ba tên: URI dùng để khớp xác thực, người dùng đăng nhập qua JAAS và dịch vụ được yêu cầu vé. Chúng phục vụ các mục đích khác nhau.
Với cách triển khai Jetty 12.0.x, một đoạn của đối tượng xác thực là:
var auth = new org.eclipse.jetty.client.SPNEGOAuthentication(
java.net.URI.create("http://proxy.example:8080"));
auth.setServiceName("HTTP");Đoạn này minh họa thành phần dịch vụ, không phải công thức xác thực proxy hoàn chỉnh. Đăng nhập JAAS, định tuyến proxy và trao đổi xác thực của yêu cầu vẫn tách biệt.
Trong cách triển khai này, Jetty xây dựng tên GSS dựa trên máy chủ bằng cách kết hợp getServiceName(), ký tự @ và máy chủ cho trao đổi xác thực. Nếu truyền [email protected] làm thành phần dịch vụ, sẽ thêm một máy chủ khác. Hãy đọc hợp đồng của setter này thay vì cho rằng nó chấp nhận một principal Kerberos đầy đủ.
Tên GSS thu được có dạng khái niệm HTTP@hostname. Principal dịch vụ tương ứng trong KDC thường được biểu diễn là HTTP/hostname. tên proxy được chọn phải khớp với dịch vụ thực sự đã đăng ký cho tài khoản đó; địa chỉ IP hoặc bí danh có thể chọn một đích vé khác.
Cũng hãy kiểm tra đường 407
Trong Jetty 12.0.x, authenticate() lấy tên máy chủ GSS từ request.getHost() và tạo kết quả với tiêu đề Authorization mặc định. Việc khớp đối tượng xác thực theo URI proxy tự nó không thay đổi các lựa chọn đó thành tên máy chủ của proxy và Proxy-Authorization.
Vì vậy tích hợp proxy cần đúng máy chủ yêu cầu và kết quả giới hạn trong proxy cho trao đổi đó. Yêu cầu HTTPS CONNECT và yêu cầu gốc thông thường có thể có giá trị máy chủ khác nhau. Hãy xác nhận hành vi của bản triển khai đã cài đặt thay vì cho rằng setter tên dịch vụ cung cấp toàn bộ luồng 407.
Với 407, hãy kiểm tra trao đổi xác thực proxy và máy chủ mà yêu cầu đó sử dụng. 401 thuộc về xác thực gốc. Chỉ một vé người dùng hợp lệ không chứng minh rằng Jetty đã yêu cầu đúng vé dịch vụ hoặc trung gian đã chấp nhận vé đó.