Собственная библиотека 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, я очень рекомендую это.