후원자:
사기 방지 기능으로 인증을 더 빠르게 구축하세요.
API 우선 인증, 사용자 및 조직 관리, 다중 테넌트 SSO, MFA, 장치 지문 인식 등을 위해 Stytch를 사용해 보세요.
? Okta, Auth0, Keycloak과 같은 오픈 소스 ID 및 액세스 관리 솔루션을 찾고 계십니까? 자세히 알아보기: Casdoor
뉴스 : 아직도 올바른 jCasbin 정책을 작성하는 방법에 대해 걱정하시나요? Casbin online editor
가 도와드리겠습니다! https://casbin.org/editor/에서 사용해 보세요.
jCasbin은 Java 프로젝트를 위한 강력하고 효율적인 오픈 소스 액세스 제어 라이브러리입니다. 다양한 액세스 제어 모델을 기반으로 인증 시행을 지원합니다.
카스빈 | jCasbin | 노드-카스빈 | PHP-카스빈 |
생산 준비 완료 | 생산 준비 완료 | 생산 준비 완료 | 생산 준비 완료 |
파이카스빈 | 카스빈닷넷 | 카스빈-CPP | 카스빈-RS |
생산 준비 완료 | 생산 준비 완료 | 베타 테스트 | 생산 준비 완료 |
write-article
, read-log
같은 권한을 사용하여 개별 리소스 대신 리소스 유형을 대상으로 할 수 있습니다. 특정 기사나 로그에 대한 접근을 통제하지 않습니다.resource.Owner
와 같은 구문 설탕을 사용하여 리소스에 대한 속성을 가져올 수 있습니다./res/*
, /res/:id
같은 경로와 GET
, POST
, PUT
, DELETE
같은 HTTP 메서드를 지원합니다.jCasbin에서 액세스 제어 모델은 PERM 메타모델(Policy, Effect, Request, Matchers)을 기반으로 CONF 파일로 추상화됩니다. 따라서 프로젝트에 대한 인증 메커니즘을 전환하거나 업그레이드하는 것은 구성을 수정하는 것만큼 간단합니다. 사용 가능한 모델을 결합하여 고유한 액세스 제어 모델을 사용자 정의할 수 있습니다. 예를 들어, 하나의 모델 내에서 RBAC 역할과 ABAC 속성을 함께 가져오고 하나의 정책 규칙 세트를 공유할 수 있습니다.
jCasbin의 가장 기본적이고 간단한 모델은 ACL입니다. ACL의 모델 CONF는 다음과 같습니다.
# 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
ACL 모델의 정책 예시는 다음과 같습니다.
p, alice, data1, read
p, bob, data2, write
그것은 다음을 의미합니다:
jCasbin이 하는 일:
{subject, object, action}
형식 또는 정의한 사용자 정의 형식으로 정책을 시행하면 승인 및 거부가 모두 지원됩니다.root
또는 administrator
와 같은 내장 수퍼유저를 지원합니다. 슈퍼유저는 명시적인 권한 없이 무엇이든 할 수 있습니다.keyMatch
리소스 키 /foo/bar
패턴 /foo*
에 매핑할 수 있습니다.jCasbin이 하지 않는 일:
username
과 password
확인이라고도 함)메이븐의 경우:
<dependency>
<groupId>org.casbin</groupId>
<artifactId>jcasbin</artifactId>
<version>1.x.y (replace with latest version)</version>
</dependency>
https://casbin.org/docs/overview
온라인 편집기(https://casbin.org/editor/)를 사용하여 웹 브라우저에 jCasbin 모델과 정책을 작성할 수도 있습니다. 프로그래밍 언어용 IDE와 마찬가지로 syntax highlighting
및 code completion
과 같은 기능을 제공합니다.
https://casbin.org/docs/tutorials
모델 파일과 정책 파일이 포함된 새로운 jCasbin 시행자:
Enforcer enforcer = new Enforcer ( "path/to/model.conf" , "path/to/policy.csv" );
참고: 파일 대신 DB의 정책을 사용하여 시행자를 초기화할 수도 있습니다. 자세한 내용은 정책 지속성 섹션을 참조하세요.
액세스가 발생하기 직전에 코드에 시행 후크를 추가하세요.
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
}
정적 정책 파일 외에도 jCasbin은 런타임 시 권한 관리를 위한 API도 제공합니다. 예를 들어, 아래와 같이 사용자에게 할당된 모든 역할을 얻을 수 있습니다.
Roles roles = enforcer . getRoles ( "alice" );
자세한 사용법은 정책 관리 API를 참조하세요.
jCasbin은 권한을 관리하기 위해 두 가지 API 세트를 제공합니다.
또한 모델 관리 및 정책 관리를 위한 웹 기반 UI도 제공합니다.
https://casbin.org/docs/adapters
https://casbin.org/docs/role-managers
모델 | 모델 파일 | 정책 파일 |
---|---|---|
ACL | basic_model.conf | 기본_정책.csv |
슈퍼유저를 사용한 ACL | basic_model_with_root.conf | 기본_정책.csv |
사용자가 없는 ACL | basic_model_without_users.conf | basic_policy_without_users.csv |
리소스가 없는 ACL | basic_model_without_resources.conf | basic_policy_without_resources.csv |
RBAC | rbac_model.conf | rbac_policy.csv |
리소스 역할이 있는 RBAC | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
도메인/테넌트가 있는 RBAC | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
ABAC | abac_model.conf | 해당 없음 |
평안한 | keymatch_model.conf | keymatch_policy.csv |
거부 무시 | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
우선 사항 | 우선순위_모델.conf | 우선순위_정책.csv |
웹 프레임워크용 Authz 미들웨어: https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
우리는 Spring Boot 지원을 제공합니다. casbin-spring-boot-starter를 사용하여 SpringBoot에서 빠르게 개발할 수 있습니다.
casbin-spring-boot-starter에서는 다음과 같이 조정했습니다:
https://github.com/jcasbin/casbin-spring-boot-starter
이 프로젝트는 기여하는 모든 사람들 덕분에 존재합니다.
모든 후원자분들께 감사드립니다! [후원자가 되세요]
후원자가 되어 이 프로젝트를 지원하세요. 귀하의 로고가 귀하의 웹사이트 링크와 함께 여기에 표시됩니다. [후원자가 되세요]
이 프로젝트는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다.
문제나 기능 요청이 있는 경우 당사에 문의해 주세요. 홍보를 환영합니다.