Tôi muốn phát triển hai dịch vụ độc lập, một cho các công cụ kinh doanh và một cho xác thực người dùng sử dụng Spring OAuth 2Xuân OAuth: Server với Authorization server backend
Hãy gọi cho họ kinh doanh-dịch vụ và OAuth-Service Resource.
Bây giờ tôi muốn đại biểu dịch vụ kinh doanh cho OAuth-Service nếu yêu cầu không được xác thực. Ứng dụng khách (một ứng dụng Android) không nên biết về dịch vụ ưu tiên của OAuth, nó chỉ được ủy quyền cho nó bởi Business-Service với chuyển hướng HTTP 302 cho yêu cầu không được xác thực. Để chính xác, tôi muốn trang đích API của mình cung cấp liên kết đến http://businessservice.com/login và khi ứng dụng khách của tôi quyết định theo liên kết này, nó sẽ được chuyển hướng đến OAuth-Service.
Nếu tôi chú thích Dịch vụ doanh nghiệp với @EnableOAuth2Resource, tất cả tài nguyên của nó được bảo vệ trở lại 401 khi tôi cuộn chúng mà không có mã thông báo truy cập. Càng xa càng tốt. Nếu tôi cung cấp mã thông báo truy cập như sau:
curl -v http://localhost:8667/resource/ -H "Authorization: Bearer $TOKEN"
Tôi có thể truy cập tài nguyên. Vẫn tốt.
Tuy nhiên, nếu tôi chú thích Dịch vụ doanh nghiệp với @EnableOAuth2Sso để bật chuyển hướng đến dịch vụ OAuth, nó sẽ mất khả năng truy cập tài nguyên bằng mã thông báo truy cập (giống như trên), nó chỉ trả lại 302 cho thông tin đăng nhập trang http://localhost:8667/login
Nếu tôi sử dụng cả các chú thích, các @ EnableOAuth2Resource luôn luôn có vẻ để "giành chiến thắng", như các công trình xác thực nhưng gọi http://localhost:8667/login trả về một 404.
vì vậy, đúng cách để tạo ra một máy chủ tài nguyên mà các đại biểu là những gì tới máy chủ auth cho các cuộc gọi không được xác thực?
bạn có thể chia sẻ cách bạn nhận thông tin người dùng trong máy chủ tài nguyên sau người dùng được xác thực bởi oauth2? – Kane
@Kane, quá muộn, nhưng có thể giúp đỡ người khác. Bạn có thể sử dụng các thông số sau trong điểm cuối: @RequestHeader (giá trị = "Ủy quyền") Ủy quyền chuỗiHeader, Dòng chínhNgười dùng – Sourabh