Ủy quyền NodeJS
Ủy quyền là rất quan trọng đối với các ứng dụng web. Nó cấp cho đúng người dùng quyền truy cập vào các phần trong ứng dụng web của bạn trên cơ sở vai trò và quyền của họ. Trong một ứng dụng đơn giản, việc thêm ủy quyền trong ứng dụng vào ứng dụng của bạn tương đối đơn giản. Nhưng với các ứng dụng phức tạp, cần phải tạo các vai trò và quyền khác nhau, điều này có thể trở nên khó quản lý Show
Trong hướng dẫn này, bạn sẽ học cách sử dụng Cerbos để thêm quyền cho một Node. js, kết quả là đơn giản hóa quy trình ủy quyền Thiết lập nút. ứng dụng jsTrước khi chúng tôi bắt đầu với Cerbos, bạn sẽ cần tạo một Nút mới. js (hoặc sử dụng ứng dụng hiện có). Hãy thiết lập một bài đăng trên blog Node. ứng dụng js làm ví dụ của chúng tôi Xác định quyền của người dùngỨng dụng đăng bài trên blog sẽ có hai vai trò. thành viên và người điều hành Vai trò thành viên sẽ có các quyền sau
Vai trò người điều hành sẽ có các quyền sau
Thành viên và người điều hành không thể thực hiện bất kỳ hành động nào nếu họ bị vô hiệu hóa Tạo ứng dụngBước 1Khởi chạy thiết bị đầu cuối hoặc công cụ dòng lệnh của bạn và tạo một thư mục cho ứng dụng mới
Bước 2Di chuyển vào thư mục bài đăng trên blog và chạy lệnh bên dưới—tệp 0 sẽ được tạo
Bước 3Mở tệp 0 và dán như sau
Hai gói chính nằm trong phần phụ thuộc của 0—Cerbos và Express
Trong 3, có bốn gói. Chai, Chai HTTP, Mocha và Nodemon. Chai, Chai HTTP và Mocha được sử dụng để chạy các tập lệnh kiểm tra tự động trong và sau quá trình phát triển. Nodemon được sử dụng để đảm bảo máy chủ ứng dụng được khởi động lại bất cứ khi nào có thay đổi đối với bất kỳ tệp nào trong quá trình phát triểnBước 4Chạy 4 để cài đặt các gói trong gói. jsonBước 5Tạo các tệp sau
9Sau đó, dán các mã sau vào các tệp tương ứng 3____14 5
Trong thời gian chờ đợi, 8 sẽ chứa một giàn giáo trống để xem ứng dụng hoạt động như thế nào, trước khi tích hợp gói ủy quyền Cerbos 7Bước 6Ứng dụng demo đã được thiết lập thành công. Bây giờ là lúc để xem ứng dụng trông như thế nào trước khi tích hợp gói ủy quyền Cerbos Khởi động máy chủ bằng lệnh bên dưới 31Bạn sẽ thấy thông tin sau trong thiết bị đầu cuối của mình để cho biết ứng dụng của bạn đang chạy trên cổng 8000 9Kiểm tra ứng dụng mà không được phépBây giờ là lúc để kiểm tra ứng dụng. Bạn có thể sử dụng bất kỳ ứng dụng khách HTTP nào mà bạn chọn, chẳng hạn như Postman, Insomnia hoặc cURL. Đối với ví dụ này, chúng tôi sẽ sử dụng cURL Thực hiện các yêu cầu sau—bạn sẽ thấy không có giới hạn nào. Thay đổi user_ID từ 1 đến 5 và bạn sẽ nhận được phản hồi hợp lệ Tạo bài đăng 0Cập nhật bài viết 1Xem tất cả bài viết 0Xem một bài đăng 1cờ đăng 2Xóa bài đăng 3Tích hợp ủy quyền CerbosKhi mọi thứ ổn định, ứng dụng được mở cho các hành động được ủy quyền và trái phép. Bây giờ, đã đến lúc triển khai Cerbos để đảm bảo người dùng chỉ thực hiện các hoạt động được ủy quyền Để bắt đầu, cần tạo một thư mục chính sách để lưu trữ các chính sách của Cerbos. Cerbos sử dụng các chính sách này để xác định người dùng nào có quyền truy cập vào tài nguyên nào. Trong thư mục bài đăng trên blog, hãy chạy lệnh bên dưới để tạo thư mục có tên là Cerbos. Điều này sẽ chứa thư mục chính sách 4Tiếp theo, chuyển sang thư mục chính sách và tạo hai tệp YAML chính sách. 32 và 33Các dẫn xuất_roles. yaml Mô tả tệpVai trò phái sinh cho phép bạn tạo vai trò động từ một hoặc nhiều vai trò chính. Ví dụ: thành viên vai trò được phép xem tất cả các bài đăng trên blog do các thành viên khác tạo nhưng không được phép thực hiện bất kỳ thao tác chỉnh sửa nào. Để cho phép chủ sở hữu của một bài đăng trên blog cũng là thành viên thực hiện các chỉnh sửa trên bài đăng trên blog của họ, vai trò dẫn xuất được gọi là chủ sở hữu được tạo để cấp quyền này Bây giờ hãy dán mã bên dưới vào 32 của bạn 5
tài nguyên_post. yaml Mô tả tệpTệp chính sách tài nguyên cho phép bạn tạo quy tắc cho vai trò gốc/vai trò dẫn xuất đối với các hành động khác nhau có thể được thực hiện trên tài nguyên. Các quy tắc này thông báo cho các vai trò nếu họ có quyền thực hiện một số hành động nhất định trên tài nguyên Dán đoạn mã sau vào 33 của bạn 6Tệp chính sách tài nguyên chứa các quyền mà mỗi vai trò hoặc vai trò dẫn xuất có thể có quyền truy cập
Để đảm bảo các tệp YAML của chính sách của bạn không chứa lỗi, hãy chạy lệnh này trong thư mục gốc của bài đăng trên blog. Nếu nó không trả về bất cứ thứ gì, thì nó không có lỗi 7Khởi động máy chủ CerbosBây giờ bạn đã tạo thành công các tệp chính sách mà Cerbos sẽ sử dụng để ủy quyền cho người dùng trong ứng dụng của bạn. Tiếp theo, đã đến lúc khởi động máy chủ Cerbos bằng cách chạy lệnh bên dưới trong thiết bị đầu cuối của bạn 8Máy chủ Cerbos của bạn sẽ chạy tại http. //máy chủ cục bộ. 3592. Truy cập liên kết và nếu không có lỗi nào được trả về thì máy chủ đang hoạt động tốt Triển khai Cerbos vào ứng dụngBây giờ là lúc để lấp đầy giàn giáo trống trong tệp 8 9 37 là bộ điều khiển kiểm tra xem người dùng có quyền truy cập vào một số hành động nhất định hay không. Nó chứa các phím sau
Phương thức 38 được sử dụng để kiểm tra xem người dùng/hiệu trưởng có được phép thực hiện hành động được yêu cầu tại trường hợp đó khôngKiểm tra Ủy quyền Cerbos với Ứng dụng Bài đăng trên BlogBạn đã thiết lập thành công các vai trò và quyền cần thiết cho từng thao tác trong ứng dụng demo bài đăng trên blog CRUD. Bây giờ là lúc để kiểm tra lại các tuyến đường và quan sát điều gì sẽ xảy ra, sử dụng bảng bên dưới làm hướng dẫn để kiểm tra actionuser_iduser_roleuser_statusresponsetạo, xem. tất cả các điểm. thành viên duy nhất1 và 2hoạt độngOKTất cả hành động3thành viên bị chặnKhông được ủy quyềnTất cả hành động5người điều hành bị chặnKhông được ủy quyềnCập nhật bài đăng của chính mình1thành viênhoạt độngOKCập nhật bài đăng của người dùng khác1thành viênhoạt độngKhông được ủy quyềnBảng trên hiển thị một tập hợp con các quyền khác nhau cho mỗi người dùng được triển khai trong ứng dụng demo Bạn có thể sao chép kho lưu trữ ứng dụng demo từ GitHub. Khi bạn đã sao chép nó, hãy làm theo các hướng dẫn đơn giản trong tệp README. Bạn có thể chạy tập lệnh kiểm tra tự động để kiểm tra các quyền và vai trò người dùng khác nhau Phần kết luậnTrong bài viết này, bạn đã biết được những lợi ích của việc ủy quyền Cerbos bằng cách triển khai nó trong một Node demo. ứng dụng js. Bạn cũng đã tìm hiểu các tệp chính sách khác nhau của Cerbos và tầm quan trọng của chúng trong việc đảm bảo ủy quyền hoạt động bình thường Ủy quyền trong nút js là gì?Nói một cách đơn giản, xác thực là quá trình xác minh người dùng là ai, trong khi ủy quyền là quá trình xác minh những gì họ có quyền truy cập . Ban đầu, chúng tôi sẽ chỉ kiểm tra mã thông báo trong tiêu đề yêu cầu cho các tuyến bị hạn chế, sau đó cho phép hoặc từ chối yêu cầu.
Sự khác biệt giữa xác thực và ủy quyền trong nút js là gì?Xác thực được thực hiện trước quy trình ủy quyền, trong khi quy trình ủy quyền được thực hiện sau quy trình xác thực . Trong quá trình xác thực, danh tính của người dùng được kiểm tra để cung cấp quyền truy cập vào hệ thống.
Ủy quyền trong js là gì?Sau khi người dùng đăng nhập, một yêu cầu dữ liệu sẽ được gửi bởi ứng dụng khách với mã thông báo JWT đã ký (để thông báo cho máy chủ đang yêu cầu dữ liệu). Về phía máy chủ, chúng tôi kiểm tra xem JWT được cung cấp có hợp lệ hay không, sau đó chúng tôi kiểm tra xem người dùng có được phép xem dữ liệu được yêu cầu hay không (bước này là .
Xác thực nào tốt nhất trong nút js?Passport js là thư viện xác thực người dùng JavaScript cực kỳ linh hoạt dành cho Node. js. Thư viện này có thể được đưa vào bất kỳ ứng dụng dựa trên Express nào mà không có bất kỳ hạn chế nào. Thư viện này sử dụng các chiến lược khác nhau để xác thực người dùng. |