Patrocinado por
Crie autenticação com prevenção contra fraudes com mais rapidez.
Experimente o Stytch para autenticação API-first, gerenciamento de usuários e organizações, SSO multilocatário, MFA, impressão digital de dispositivos e muito mais.
? Procurando uma solução de gerenciamento de identidade e acesso de código aberto como Okta, Auth0, Keycloak? Saiba mais sobre: Casdoor
Notícias : ainda se preocupa em como escrever a política jCasbin correta? Casbin online editor
está vindo para ajudar! Experimente em: https://casbin.org/editor/
jCasbin é uma biblioteca de controle de acesso de código aberto poderosa e eficiente para projetos Java. Ele fornece suporte para impor autorização com base em vários modelos de controle de acesso.
Casinha | jCasbin | nó-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 | teste beta | pronto para produção |
write-article
, read-log
. Não controla o acesso a um artigo ou log específico.resource.Owner
pode ser usada para obter o atributo de um recurso./res/*
, /res/:id
e métodos HTTP como GET
, POST
, PUT
, DELETE
.No jCasbin, um modelo de controle de acesso é abstraído em um arquivo CONF baseado no metamodelo PERM (Policy, Effect, Request, Matchers) . Portanto, mudar ou atualizar o mecanismo de autorização de um projeto é tão simples quanto modificar uma configuração. Você pode personalizar seu próprio modelo de controle de acesso combinando os modelos disponíveis. Por exemplo, você pode reunir funções RBAC e atributos ABAC dentro de um modelo e compartilhar um conjunto de regras de política.
O modelo mais básico e simples do jCasbin é o ACL. O modelo CONF do ACL é:
# Request definition
[request_definition]
r = sub, obj, act
# Policy definition
[policy_definition]
p = sub, obj, act
# Policy effect
[policy_effect]
e = some(where ( p.eft == allow))
# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
Um exemplo de política para o modelo ACL é como:
p, alice, data1, read
p, bob, data2, write
Isso significa:
O que jCasbin faz:
{subject, object, action}
ou em um formulário personalizado conforme definido, as autorizações de permissão e negação são suportadas.root
ou administrator
. Um superusuário pode fazer qualquer coisa sem permissões explícitas.keyMatch
pode mapear uma chave de recurso /foo/bar
para o padrão /foo*
.O que jCasbin NÃO faz:
username
e password
quando um usuário faz login)Para Maven:
<dependency>
<groupId>org.casbin</groupId>
<artifactId>jcasbin</artifactId>
<version>1.x.y (replace with latest version)</version>
</dependency>
https://casbin.org/docs/overview
Você também pode usar o editor online (https://casbin.org/editor/) para escrever seu modelo e política jCasbin em seu navegador. Ele fornece funcionalidades como syntax highlighting
e code completion
, assim como um IDE para uma linguagem de programação.
https://casbin.org/docs/tutorials
Novo aplicador jCasbin com um arquivo de modelo e um arquivo de política:
Enforcer enforcer = new Enforcer ( "path/to/model.conf" , "path/to/policy.csv" );
Nota: você também pode inicializar um aplicador com política no banco de dados em vez de arquivo, consulte a seção Persistência de política para obter detalhes.
Adicione um gancho de aplicação ao seu código logo antes do acesso acontecer:
String sub = "alice" ; // the user that wants to access a resource.
String obj = "data1" ; // the resource that is going to be accessed.
String act = "read" ; // the operation that the user performs on the resource.
if ( enforcer . enforce ( sub , obj , act ) == true ) {
// permit alice to read data1
} else {
// deny the request, show an error
}
Além do arquivo de política estática, o jCasbin também fornece API para gerenciamento de permissões em tempo de execução. Por exemplo, você pode obter todas as funções atribuídas a um usuário conforme abaixo:
Roles roles = enforcer . getRoles ( "alice" );
Consulte APIs de gerenciamento de políticas para obter mais informações sobre uso.
jCasbin fornece dois conjuntos de APIs para gerenciar permissões:
Também fornecemos uma UI baseada na web para gerenciamento de modelos e gerenciamento de políticas:
https://casbin.org/docs/adapters
https://casbin.org/docs/role-managers
Modelo | Arquivo de modelo | Arquivo de política |
---|---|---|
LCA | modelo_básico.conf | política_básica.csv |
ACL com superusuário | modelo_básico_com_root.conf | política_básica.csv |
ACL sem usuários | basic_model_without_users.conf | basic_policy_without_users.csv |
ACL sem recursos | basic_model_without_resources.conf | basic_policy_without_resources.csv |
RBAC | rbac_model.conf | rbac_policy.csv |
RBAC com funções de recursos | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
RBAC com domínios/inquilinos | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
ABAC | abac_model.conf | N / D |
Repousante | keymatch_model.conf | keymatch_policy.csv |
Negar substituição | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
Prioridade | prioridade_model.conf | prioridade_policy.csv |
Middlewares Authz para estruturas web: https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
Fornecemos suporte ao Spring Boot, você pode usar casbin-spring-boot-starter para desenvolver rapidamente no SpringBoot
No casbin-spring-boot-starter, fizemos os seguintes ajustes:
https://github.com/jcasbin/casbin-spring-boot-starter
Este projeto existe graças a todas as pessoas que contribuem.
Obrigado a todos os nossos apoiadores! [Torne-se um apoiador]
Apoie este projeto tornando-se um patrocinador. Seu logotipo aparecerá aqui com um link para seu site. [Torne-se um patrocinador]
Este projeto está licenciado sob a licença Apache 2.0.
Se você tiver algum problema ou solicitação de recurso, entre em contato conosco. Relações públicas são bem-vindas.