Собственная библиотека RBAC для NodeJS
мы ищем подходящую библиотеку Nodejs для управления доступом на основе ролей (RBAC).
Мы провели некоторое исследование по этому поводу и обнаружили, что самое популярное решение - это. Это модуль Access Control List, основанный на Redis с поддержкой промежуточного программного обеспечения Express. Эта библиотека имеет отличную поддержку и очень популярна.
Но в то же время здесь есть другое решение.
Это авторизация провайдера, которая предназначена для работы с подключением или экспресс. Я вижу, что последний коммит в этом репо был сделан 1 год назад. Так что поддержка не очень хорошо.
Какая библиотека будет лучше для обработки ролей и привилегий в сложном приложении?
Ответы
Ответ 1
Прежде всего, одно небольшое уточнение: RBAC и ACL не являются двумя взаимозаменяемыми понятиями. Ссылка, на которую вы ссылаетесь, названа в честь ACL, но различия четко описаны в этой статье от Карла Дюны (см. Слова, выделенные жирным шрифтом):
- "ACL или Access Control List - это реализация контроля доступа, обычно представляемая в виде таблицы привилегий".
- "Управление доступом на основе ролей - это метод контроля доступа, при котором пользователям назначаются роли, а роли определяют, какими привилегиями они обладают".
Сказав это, существует множество модулей RBAC Node.js - помимо упомянутого вами и easy-rbac, от самого Карла Дюны. Два альтернативных модуля RBAC, которые могли бы удовлетворить ваши потребности (без понятия "права доступа", как указано в node_acl):
- RBAC2
- express-rbac с экспресс-интеграцией и примером использования промежуточного программного обеспечения Passport.
В соответствии с вашими показателями активности, в обоих модулях не хватает последних коммитов; однако исходный код занимает меньше места в виде строк кода и покрывается модульными тестами, что также облегчает обслуживание с вашей стороны.
Ответ 2
Вы слышали о нашем Господе и Спасителе Сваггере (Христе)? Он используется для документирования больших API и проверки ответов. Если это звучит как что-то, что вы хотели бы реализовать (для его реализации потребуется 1-2 дня работы, так как в основном это документирование ваших маршрутов API с использованием YAML)
Если это звучит как что-то, что вы можете сделать, то вы можете использовать JWT и настроить его на основе роли, используя это: http://miguelduarte.pt/2017/04/19/using-jwt-authentication-with-swagger-and-node-js/
Таким образом, вам не нужно много менять в коде, только в YAML, я очень рекомендую это.