Một trong những thành phần quan trọng đối với các hệ thống phân tán đó là triển khai mô hình bảo mật và phân quyền cho hệ thống. Đối với mô hình dịch vụ web sử dụng RESTful thì việc lựa chọn mô hình bảo mật càng trở nên quan trọng vì bản thân RESTful không có mô tả cho việc này.
Có nhiều lựa chọn để triển khai bảo mật cho các API, chẳng hạn nhƣ:
HTTP Basic Authentication (Xác thực dựa trên HTTP), Digest Access Authentication (Xác thực dựa trên mã băm), OAuth, Token-based Authentication (Xác thực dựa trên Token)… trong đó mô hình xác thực dựa trên Token là một lựa chọn hợp lý dựa trên hai lí do chính sau:
Gọn nhẹ: Token đƣợc truyền đi thông qua URL, tham số trên Request hay trong phần Header của HTTP với kích thƣớc khá nhỏ. Chứa thông tin: Token chứa thông tin và đƣợc mã hóa, sau đó có thể
giải mã để lấy các thông tin trong đó, thƣờng là thông tin về ngƣời dùng. Cách hoạt động này có thể giúp giảm lƣợng yêu cầu truy xuất đến cơ sở dữ liệu để lấy thông tin ngƣời dùng.
Mô hình hoạt động của cơ chế bảo mật dựa trên Token đƣợc mô tả trong sơ đồ ở Hình 3.2.
Hình 3.2. Sơ đồ hoạt động của cơ chế bảo mật dựa trên Token.
Trong hệ thống hiện tại, việc triển khai cơ chế bảo mật này đƣợc thực hiện thông qua sử dụng module mã nguồn mở jsonwebtoken
(https://github.com/auth0/node-jsonwebtoken) ở phía server và module mã nguồn mở angular-local-storage (https://github.com/grevory/angular-local- storage) để lƣu trữ Token ở phía client.
3.2. Công nghệ sử dụng
Dựa trên thiết kế kiến trúc nhƣ đã đề cập ở trên, luận văn đã thực hiện tìm hiểu và đánh giá các công nghệ để đƣa ra sự lựa chọn hợp lý. Các công nghệ đƣợc sử dụng để xây dựng hệ thống bao gồm: Node.js (với express.js), AngularJS và MongoDB.