Kiến trúc phần mềm để xác thực / kiểm soát truy cập dịch vụ web REST


12

Tôi đang thiết lập một dịch vụ web RESTful mới và tôi cần cung cấp mô hình kiểm soát truy cập dựa trên vai trò . Tôi cần tạo một kiến ​​trúc cho phép người dùng cung cấp tên người dùng và mật khẩu của họ để có quyền truy cập vào các dịch vụ và sau đó hạn chế cách họ có thể sử dụng các dịch vụ (dịch vụ họ có thể sử dụng, đọc so với đọc / ghi, v.v.) dựa trên vai trò giao cho người dùng đó.

Tôi đã xem xét xung quanh các câu hỏi khác và tìm thấy những phần tôi muốn. Ví dụ, có một số cuộc thảo luận tuyệt vời về cách xử lý việc chuyển thông tin đăng nhập sang dịch vụ REST một cách xác thực , thực tiễn tốt nhất . Ngoài ra còn có một số gợi ý tuyệt vời về những gì lập trình viên nên biết khi tạo trang web ( điều mà mọi nhà phát triển nên biết trước khi xây dựng một trang web công cộng ).

Nhưng tôi đã không thể tìm thấy một bài viết, bài viết, cuốn sách hay về các thực tiễn và mô hình tốt nhất cho kiến ​​trúc phần mềm thực hiện các giải pháp này.

Đặc biệt:

  • Làm thế nào nên lưu trữ thông tin người dùng và quyền truy cập? (mô hình dữ liệu, vị trí, định dạng)
  • Các mẫu thiết kế tốt để đại diện và theo dõi chúng trong máy chủ là gì? (phiên trong bộ nhớ, tra cứu db mỗi lần, v.v.)
  • Các mẫu tốt để ánh xạ các quyền này đến các dịch vụ một cách an toàn trong cơ sở mã là gì?
  • Lựa chọn kiến ​​trúc nào có thể giúp giữ cho hệ thống an toàn và đáng tin cậy hơn?
  • Những bài học nào mọi người có được từ các chiến hào?

Tôi đang tìm kiếm các mẫu thiết kế và đề xuất cho kiến ​​trúc phần mềm bên ngoài bất kỳ công nghệ cụ thể nào.

(Nếu các công nghệ có vấn đề, tôi đang lên kế hoạch thực hiện điều này bằng cách sử dụng python, twist và cơ sở dữ liệu postgresql)


Âm thanh như bạn chỉ cần ai đó viết nó cho bạn;)
Martin Blore

Thật không may, nó trông giống như cách. Có vẻ kỳ lạ là phần này của ngăn xếp không được mô tả ở bất cứ đâu. Ngay cả khi tôi có thể tìm thấy một bài viết về cách một trang web như newegg, digg hoặc thậm chí stackoverflow xử lý thông tin đăng nhập của người dùng và truy cập trong phần phụ trợ, điều đó sẽ giúp ích.
Allen

Bạn đã thực hiện bất kỳ tiến bộ về điều này?
Bryan Agee

Bạn đã xem xét oAuth2 chưa? Có thư viện máy chủ và máy khách có sẵn cho nó bằng nhiều ngôn ngữ phổ biến sẽ giúp thực hiện dễ dàng hơn.
Sam

Câu trả lời:


5

OpenAM.

http://forgerock.com/openam.html

Làm thế nào nên lưu trữ thông tin người dùng và quyền truy cập? (mô hình dữ liệu, vị trí, định dạng)

Quản lý danh tính. Tách biệt với bất kỳ máy chủ web. Dựa trên LDAP.

Các mẫu thiết kế tốt để đại diện và theo dõi chúng trong máy chủ là gì? (phiên trong bộ nhớ, tra cứu db mỗi lần, v.v.)

Giải quyết theo khuôn khổ của bạn. Không suy nghĩ nhiều. Chỉ cần sử dụng các mẫu thiết kế tốt đã được xây dựng của khung của bạn.

Các mẫu tốt để ánh xạ các quyền này đến các dịch vụ một cách an toàn trong cơ sở mã là gì?

Giải quyết theo khuôn khổ của bạn. Mỗi khung sử dụng một cách tiếp cận hơi khác nhau. Mỗi ngôn ngữ có các tính năng hơi khác nhau. Django, ví dụ, sử dụng trang trí của Python rất nhiều cho việc này.

Lựa chọn kiến ​​trúc nào có thể giúp giữ cho hệ thống an toàn và đáng tin cậy hơn?

Hơn? Hơn cái gì?


Trong thiết lập cụ thể của tôi, tôi không nghĩ rằng tôi có thể sử dụng một cái gì đó như OpenAM. Tôi không cần đăng nhập một lần cho toàn doanh nghiệp. Tôi nghĩ rằng tôi cần một cái gì đó nhỏ hơn và khép kín hơn.
Allen

@ Allen. Chúng tôi không sử dụng nó cho đăng nhập một lần trên toàn doanh nghiệp. Chúng tôi sử dụng nó để quản lý danh tính đơn giản.
S.Lott
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.