Thông số OAuth 2 dẫn tôi tin rằng "máy chủ tài nguyên" và "máy chủ ủy quyền" không nhất thiết phải là cùng một ứng dụng nhưng tôi đang cố gắng tìm ra cách này thực sự được triển khai trong thực tế.OAuth 2: tách máy chủ tài nguyên và máy chủ ủy quyền
Như một ví dụ, giả sử các ứng dụng sau đây tồn tại:
- máy chủ tài nguyên
- phép máy chủ
- web frontend
- của bên thứ ba ứng dụng client
Kịch bản # 1: Đăng nhập vào giao diện người dùng web
- dùng gửi vào ô đăng nhập
- ứng dụng web POSTS thông tin để auth máy chủ (grant_type = mật khẩu) và nhận được một access_token
- các cửa hàng ứng dụng web access_token trong một phiên
- theo từng yêu cầu tiếp theo:
- Lấy (các) tài nguyên từ máy chủ tài nguyên (w/access_token trong tiêu đề Cấp quyền) và hiển thị tài nguyên trong giao diện web
- nếu chúng tôi nhận được 401 rồi đăng xuất người dùng (xóa access_token khỏi phiên)
Kịch bản # 2: Ủy quyền ứng dụng của bên thứ ba
- yêu cầu người dùng cho phép từ dịch vụ auth
- cho phép/từ chối mẫu được hiển thị
- dùng được chuyển hướng trở lại ứng dụng client với sự cho phép mã hiện tại
- ứng dụng của khách hàng Gửi mã tới dịch vụ xác thực (grant_type = authorization_code) và nhận access_token
- khách hàng Nhận tài nguyên từ máy chủ tài nguyên đang chuyển (w/Tiêu đề Auth)
Phần tôi đang gặp khó hiểu là cách xác thực người dùng trước khi hiển thị biểu mẫu cho phép/từ chối trong trường hợp # 2. Người dùng có thể đăng nhập vào ứng dụng web chính nhưng dịch vụ auth không có ý tưởng về điều đó và bằng cách nào đó sẽ cần phải xác thực lại người dùng. Dịch vụ xác thực có cần hỗ trợ đăng nhập/phiên không?
Tôi tự hỏi nếu nó có thể có ý nghĩa hơn đối với các ứng dụng web để chịu trách nhiệm về hiển thị cho phép/từ chối hình thức vì hai lý do:
- nó giữ tất cả các giao diện người dùng trong một ứng dụng duy nhất
- sẽ không buộc người dùng phải gửi lại thông tin của mình nếu họ đã đăng nhập vào ứng dụng web
Dưới đây là một khả năng thay thế cho kịch bản # 2:
- yêu cầu người dùng cho phép từ ứng dụng web
- cho phép/từ chối mẫu được hiển thị
- POSTS ứng dụng web để auth máy chủ tạo ra một khoản trợ cấp mới, mã giấy phép được trả lại
- ứng dụng web chuyển hướng đến ứng dụng client với mã uỷ quyền có mặt
- ứng dụng khách POST mã để dịch vụ xác thực và nhận access_token
Cách tốt nhất để xử lý vấn đề này là gì? Bất kỳ ý kiến chung, lời khuyên, vv sẽ là tuyệt vời!
Cảm ơn
Cảm ơn! Đó là một cách tiếp cận thú vị. Vẫn không chắc chắn nếu nó có giá trị phức tạp thêm. – scttnlsn
Vâng, có một câu hỏi ở đó: nếu bạn có nhiều ứng dụng web khác nhau bằng cách sử dụng cùng một phụ trợ auth (như Google không) bạn có thể muốn có một máy chủ auth chuyên dụng với tất cả các màn hình đăng nhập liên quan trên đó. Đối với một ứng dụng có thể không đáng để làm việc. – Femi
Loại cấp mật khẩu chỉ nên được sử dụng cho các ứng dụng thuộc quyền sở hữu và kiểm soát của pháp nhân sở hữu dịch vụ ủy quyền. Nếu không, nó sẽ mở ra các lỗ hổng bảo mật nghiêm trọng. Người dùng chỉ nên cung cấp thông tin xác thực của họ cho ứng dụng đã cấp cho họ. – user2268788