Overview
Casbin é uma biblioteca de controle de acesso open-source poderosa e eficiente que suporta vários modelos de controle de acesso para impor autorização de forma abrangente.
Impor um conjunto de regras é tão simples quanto listar sujeitos, objetos e a ação permitida desejada (ou qualquer outro formato conforme suas necessidades) em um arquivo de política. Isso é sinônimo em todos os fluxos nos quais o Casbin é utilizado. O desenvolvedor/administrador tem controle total sobre o layout, execução e condições para autorização, que são definidas através do arquivo de modelo. Casbin fornece um Enforcer para validar uma solicitação de entrada com base nos arquivos de política e modelo fornecidos ao Enforcer.
Idiomas Suportados pelo Casbin
Casbin oferece suporte para várias linguagens de programação, prontas para serem integradas em qualquer projeto e fluxo de trabalho:
Casbin | jCasbin | node-Casbin | PHP-Casbin |
Pronto para Produção | Pronto para Produção | Pronto para Produção | Pronto para Produção |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
Pronto para Produção | Pronto para Produção | Pronto para Produção | Pronto para Produção |
Conjunto de Funcionalidades para Diferentes Idiomas
Estamos sempre trabalhando ao máximo para fazer com que o Casbin tenha o mesmo conjunto de funcionalidades para todos os idiomas. No entanto, a realidade não é tão bela.
Funcionalidade | Go | Java | Node.js | PHP | Python | C# | Delphi | Rust | C++ | Lua | Dart | Elixir |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Enforcement | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ABAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Scaling ABAC (eval() ) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
Management API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Batch API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Filtered Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Watcher | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Role Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
Multi-Threading | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
'in' of matcher | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
Nota - ✅ para Watcher ou Role Manager significa apenas ter a interface na biblioteca principal. Não é indicativo de se há uma implementação de watcher ou role manager disponível. O que é o Casbin?
Casbin é uma biblioteca de autorização que pode ser usada em fluxos onde queremos que um certo objeto
ou entidade seja acessado por um usuário específico ou sujeito
.
O tipo de acesso, ou seja, ação
, pode ser ler, escrever, deletar ou qualquer outra ação conforme definido pelo desenvolvedor. É assim que o Casbin é mais amplamente utilizado, e é chamado de fluxo "padrão" ou clássico { sujeito, objeto, ação }
. Casbin é capaz de lidar com muitos cenários complexos de autorização além do fluxo padrão.
Pode haver a adição de papéis (RBAC), atributos (ABAC), etc. O que o Casbin Faz
Impor a política na forma clássica { sujeito, objeto, ação }
ou em uma forma personalizada como você definiu.
- Ambas as autorizações de permitir e negar são suportadas. Gerenciar o armazenamento do modelo de controle de acesso e sua política.
- Gerenciar os mapeamentos de papel-usuário e mapeamentos de papel-papel (também conhecido como hierarquia de papéis no RBAC).
- Suportar superusuários integrados como
root
ouadministrador
. - Support built-in superusers like
root
oradministrator
. Um superusuário pode fazer qualquer coisa sem permissões explícitas. - Fornece vários operadores integrados para suportar a correspondência de regras. Por exemplo,
keyMatch
pode mapear uma chave de recurso/foo/bar
para o padrão/foo*
.
O que o Casbin NÃO Faz
- Autenticação (ou seja, verificar
username
epassword
quando um usuário faz login) - Gerenciar a lista de usuários ou papéis.
É mais conveniente para projetos gerenciar suas listas de usuários, papéis ou senhas. Os usuários geralmente têm suas próprias senhas, e o Casbin não é projetado como um contêiner de senhas. No entanto, o Casbin armazena o mapeamento usuário-papel para o cenário RBAC.