Tôi đang khám phá kiến trúc hướng dịch vụ cơ bản và tôi tự hỏi cách xử lý xác thực người dùng tốt nhất trong suốt các dịch vụ.Xác thực tập trung trong kiến trúc hướng dịch vụ
Như một ví dụ rất đơn giản, giả sử chúng ta có một ứng dụng blog mà gọi ra hai dịch vụ khác:
- Một dịch vụ người dùng/auth để lưu trữ dữ liệu người dùng và trao đổi thông tin cho một access token
- Một dịch vụ bài đăng để quản lý dữ liệu bài đăng
Giả sử người dùng đang cố xóa một bài đăng cụ thể và chỉ người dùng có vai trò "quản trị" mới được phép làm như vậy.
Các yêu cầu sau sẽ cần phải được thực hiện:
ứng dụng -> auth
Xác thực người dùng hiện thời (thông qua một số loại token). Nếu mã thông báo hết hạn các ứng dụng có thể chuyển hướng người dùng đến một hình thức đăng nhập vv
ứng dụng -> bài
Xóa đường bưu điện.
bài viết -> auth
Trước một bài đăng bị xóa, ngành bưu điện cần đảm bảo người dùng yêu cầu có quyền làm như vậy. Xác thực người dùng hiện tại (thông qua mã thông báo) và đảm bảo họ có vai trò "quản trị".
Đây là ví dụ quá đơn giản nhưng tôi tò mò về cách mọi người đang đối phó với auth trong suốt dịch vụ của họ. Dường như mỗi dịch vụ sẽ cần thực hiện cuộc gọi riêng đến dịch vụ xác thực để ủy quyền yêu cầu. Đây có phải là trường hợp không? Có cách nào tốt hơn để xử lý auth trong loại SOA này?
Cảm ơn!
Bạn có đề xuất rằng mã thông báo tự bao gồm vai trò của người dùng không? – scttnlsn
Tất cả phụ thuộc vào yêu cầu bảo mật của bạn. nếu cho thời hạn mã thông báo, bạn có thể sống với việc không xử lý thu hồi ủy quyền thì bạn có thể sử dụng nó. Trong trường hợp bạn không thể đủ khả năng mà bạn cần ủy quyền cho mỗi yêu cầu. Lưu ý rằng nếu nhà cung cấp nhận dạng và các dịch vụ sử dụng nó được triển khai trên cùng một máy chủ thì chi phí có thể hợp lý. ví dụ. đại lý chính sách trong OpenAM https://wikis.forgerock.org/confluence/display/openam/Authentication+and+Authorization+Overview –
Điều cần biết ... cảm ơn! – scttnlsn