Bối cảnh:Mô hình tốt để thực hiện kiểm soát truy cập trong máy chủ GraphQL là gì?
Tôi có một tập hợp các mô hình, trong đó có một tài khoản và các mô hình khác nhau, một số trong đó chứa tham chiếu đến một tài khoản. Tôi đang trưng bày các mô hình này để truy vấn thông qua API GraphQL được tạo bởi Graffiti, được hỗ trợ bởi cơ sở dữ liệu Mongo bằng bộ điều hợp graffiti-mongoose. API REST hiện tại của tôi (mà tôi đang chuyển sang GraphQL) sử dụng JSON Web Tokens để xác thực người dùng và có một số logic quyền tùy chỉnh ở phía máy chủ để xử lý kiểm soát truy cập.
Vấn đề:
Tôi muốn hạn chế quyền truy cập vào các đối tượng trong GraphQL dựa trên người dùng đăng nhập hiện hành. Một số mô hình có thể truy cập được để đọc bằng các cuộc gọi chưa được xác thực. Hầu hết các mô hình khác chỉ nên truy cập được đối với Người dùng đã tạo chúng. Cách tốt nhất để quản lý kiểm soát truy cập đối tượng thông qua API do Graffiti tạo ra là gì?
Nói chung, có các mẫu kiểm soát truy cập tốt cho GraphQL? Và đặc biệt, có bất kỳ ví dụ hay thư viện tốt nào để thực hiện nó với Graffiti không?
Ghi chú:
Tôi hiểu rằng móc trước và hậu có been implemented cho graffiti-cầy mangut, và rằng họ can be used để làm kiểm tra nhị phân cơ bản để xác thực. Tôi muốn xem cách một logic kiểm soát truy cập chi tiết hơn có thể được làm việc thành một API GraphQL. Trong tương lai, chúng tôi sẽ muốn hỗ trợ những thứ như Quản trị viên có quyền truy cập vào các trường hợp mô hình được tạo bởi một nhóm Người dùng nhất định (ví dụ: Người dùng có Chi nhánh bao gồm Quản trị viên).
Bạn nên xem xét XACML và ABAC là các mô hình kiểm soát truy cập dựa trên thuộc tính tốt mà bạn có thể sử dụng để bảo mật GraphQL và các ứng dụng khác –