문서 | 튜토리얼 | 확장
속보 : 이제 Laravel 프레임워크용 인증 라이브러리인 Laravel-authz를 사용할 수 있습니다.
PHP-Casbin은 PHP 프로젝트를 위한 강력하고 효율적인 오픈 소스 액세스 제어 라이브러리입니다. 다양한 액세스 제어 모델을 기반으로 인증 시행을 지원합니다.
카스빈 | jCasbin | 노드-카스빈 | PHP-카스빈 |
생산 준비 완료 | 생산 준비 완료 | 생산 준비 완료 | 생산 준비 완료 |
파이카스빈 | 카스빈닷넷 | 카스빈-CPP | 카스빈-RS |
생산 준비 완료 | 생산 준비 완료 | 생산 준비 완료 | 생산 준비 완료 |
프로젝트의 composer.json
에 이 패키지가 필요합니다. 그러면 패키지가 다운로드됩니다.
composer require casbin/casbin
require_once ' ./vendor/autoload.php ' ;
use Casbin Enforcer ;
$ e = new Enforcer ( " path/to/model.conf " , " path/to/policy.csv " );
$ sub = " alice " ; // the user that wants to access a resource .
$ obj = " data1 " ; // the resource that is going to be accessed .
$ act = " read " ; // the operation that the user performs on the resource .
if ( $ e -> enforce ( $ sub , $ obj , $ act ) === true ) {
// permit alice to read data1
} else {
// deny the request , show an error
}
write-article
, read-log
같은 권한을 사용하여 개별 리소스 대신 리소스 유형을 대상으로 할 수 있습니다. 특정 기사나 로그에 대한 접근을 통제하지 않습니다.resource.Owner
와 같은 구문 설탕을 사용하여 리소스에 대한 속성을 가져올 수 있습니다./res/*
, /res/:id
같은 경로와 GET
, POST
, PUT
, DELETE
같은 HTTP 메서드를 지원합니다.php-casbin에서 액세스 제어 모델은 PERM 메타모델(정책, 효과, 요청, 일치자)을 기반으로 CONF 파일로 추상화됩니다. 따라서 프로젝트에 대한 인증 메커니즘을 전환하거나 업그레이드하는 것은 구성을 수정하는 것만큼 간단합니다. 사용 가능한 모델을 결합하여 고유한 액세스 제어 모델을 사용자 정의할 수 있습니다. 예를 들어, 하나의 모델 내에서 RBAC 역할과 ABAC 속성을 함께 가져오고 하나의 정책 규칙 세트를 공유할 수 있습니다.
php-casbin에서 가장 기본적이고 간단한 모델은 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
그것은 다음을 의미합니다:
php-casbin이 하는 일:
{subject, object, action}
형식 또는 정의한 사용자 정의 형식으로 정책을 시행하면 승인 허용 및 거부가 모두 지원됩니다.root
또는 administrator
와 같은 내장 수퍼유저를 지원합니다. 슈퍼유저는 명시적인 권한 없이 무엇이든 할 수 있습니다.keyMatch
리소스 키 /foo/bar
패턴 /foo*
에 매핑할 수 있습니다.php-casbin이 하지 않는 일:
username
과 password
확인이라고도 함)https://casbin.org/docs/en/overview
온라인 편집기(http://casbin.org/editor/)를 사용하여 웹 브라우저에 php-casbin 모델과 정책을 작성할 수도 있습니다. 프로그래밍 언어용 IDE와 마찬가지로 syntax highlighting
및 code completion
과 같은 기능을 제공합니다.
https://casbin.org/docs/tutorials
php-casbin은 권한을 관리하기 위해 두 가지 API 세트를 제공합니다.
https://casbin.org/docs/en/adapters
https://casbin.org/docs/en/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
이 프로젝트는 기여하는 모든 사람들 덕분에 존재합니다.
모든 후원자분들께 감사드립니다! [후원자가 되세요]
후원자가 되어 이 프로젝트를 지원하세요. 귀하의 로고가 귀하의 웹사이트 링크와 함께 여기에 표시됩니다. [후원자가 되세요]
이 프로젝트는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다.
문제나 기능 요청이 있는 경우 당사에 문의해 주세요. 홍보를 환영합니다.