2013-04-28 34 views
13

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:

  1. 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
  2. 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!

Trả lời

6

Bạn có thể triển khai identity provider - Khi người dùng xác thực với dịch vụ xác thực/xác thực, cô ấy sẽ nhận được mã thông báo nhận dạng cô ấy. Mã thông báo này có thể xác định cô ấy (vai trò/xác nhận quyền sở hữu) và được ký bởi khóa riêng tư dịch vụ xác thực/ủy quyền. Khi một dịch vụ nhận được một mã thông báo bảo mật và nó được ký bởi một cơ quan đáng tin cậy, nó không cần phải đi đến dịch vụ xác thực/ủy quyền một lần nữa.

Nếu hệ thống của bạn có yêu cầu bảo mật cao hơn (ví dụ: ở cấp người dùng), bạn có thể cần xác nhận quyền sở hữu công phu hoặc truy cập hệ thống ủy quyền theo từng yêu cầu. Tôi đã từng làm việc một lần trên một hệ thống mà một số loại thông tin nhất định yêu cầu ủy quyền trên mọi quyền truy cập và các loại khác đều được bảo mật dựa trên vai trò - tỷ lệ phần trăm của bạn có thể thay đổi.

+0

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

+1

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 –

+0

Điều cần biết ... cảm ơn! – scttnlsn

Các vấn đề liên quan