Pular para o conteúdo principal

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:

golangjavanodejsphp
CasbinjCasbinnode-CasbinPHP-Casbin
Pronto para ProduçãoPronto para ProduçãoPronto para ProduçãoPronto para Produção
pythondotnetc++rust
PyCasbinCasbin.NETCasbin-CPPCasbin-RS
Pronto para ProduçãoPronto para ProduçãoPronto para ProduçãoPronto 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.

FuncionalidadeGoJavaNode.jsPHPPythonC#DelphiRustC++LuaDartElixir
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.

  1. Ambas as autorizações de permitir e negar são suportadas. Gerenciar o armazenamento do modelo de controle de acesso e sua política.
  2. Gerenciar os mapeamentos de papel-usuário e mapeamentos de papel-papel (também conhecido como hierarquia de papéis no RBAC).
  3. Suportar superusuários integrados como root ou administrador.
  4. Support built-in superusers like root or administrator. Um superusuário pode fazer qualquer coisa sem permissões explícitas.
  5. 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

  1. Autenticação (ou seja, verificar username e password quando um usuário faz login)
  2. 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.