Tôi hiện đang phát triển một ứng dụng dựa trên kiến trúc dịch vụ vi mô. Chúng tôi sử dụng API-Gateway được triển khai bằng Máy chủ Zuul của Spring Cloud Netfix để định tuyến các yêu cầu đến các dịch vụ vi mô của chúng tôi.Máy chủ ủy quyền OAuth mùa xuân phía sau Spring Cloud Zuul Proxy
Để nhận ra một lần đăng nhập cho tất cả các dịch vụ của chúng tôi, tôi hiện đang làm việc trên một máy chủ OAuth2 được thiết lập bằng cách sử dụng Bảo mật đám mây mùa xuân. Máy chủ về cơ bản chỉ là bản sao và quá khứ của việc triển khai trong Repo của Dave Syer: https://github.com/dsyer/spring-security-angular/tree/master/oauth2/authserver
Sự khác biệt chính là tôi muốn định tuyến các yêu cầu tới máy chủ OAuth của tôi thông qua Proxy Zuul. Bằng cách này, tôi sẽ không phải trực tiếp hiển thị Máy chủ OAuth của mình và có thể thêm và xóa Máy chủ đăng nhập một cách linh hoạt.
Vấn đề là tôi không tìm đường để hiểu cách định cấu hình chính xác thiết lập này. Khi tôi cố truy cập tài nguyên được bảo vệ trên máy chủ OAuth, tôi được chuyển tiếp tới trang đăng nhập. Điều này tất nhiên là như mong đợi. Nhưng tôi không thể tìm ra cách đặt tên máy chủ và cổng được sử dụng khi chuyển tiếp. Những gì tôi muốn xảy ra là máy chủ để chuyển tiếp đến một điểm cuối trên máy chủ Zuul sẽ được proxy trở lại máy chủ OAuth. (Cổng API Zuul phải là máy chủ duy nhất mà khách hàng từng nói chuyện. Mọi thứ khác sẽ bị ẩn.)
Vì máy chủ và cổng được đọc từ HttpServletRequest
trong LoginUrlAuthenticationEntryPoint
. Nhưng yêu cầu mà máy chủ thấy là yêu cầu gửi bởi proxy Zuul. Vì vậy, tôi được chuyển tiếp đến một IP nội bộ không phải là điểm cuối trên proxy.
Tôi đã cố gắng đặt URL của trang đăng nhập trong WebSecurityConfigurerAdapter.configure(HttpSecurity)
thành URL tuyệt đối của Proxy Zuul của tôi. Nhưng điều này chỉ khiến ứng dụng của tôi phàn nàn về quá nhiều chuyển hướng. (Có thể đã gây ra một vòng lặp ở đó.)
Cách tốt nhất để thiết lập điều này là gì?
- Tôi có phải thực hiện một số loại chiến lược chuyển tiếp riêng bằng cách ghi đè một bean không?
- Có tùy chọn cấu hình nào bị thiếu không?
- Ý tưởng của tôi có sai không? (Trong câu trả lời của mình để How to avoid redirect to another host with Zuul? Dave Syer nói rằng bạn sẽ không bình thường proxy này nhưng không giải thích lý do tại sao.)
Vì vậy, cuối cùng làm thế nào để bạn tiến hành với vấn đề này? – wmfairuz
Bạn có thể vui lòng thêm cách bạn sắp xếp và triển khai? – Sourabh
Tôi đã chấp nhận câu trả lời được xếp hạng cao nhất hiện nay. –