ドキュメント |チュートリアル |拡張機能
ニュース速報: Laravel フレームワークの認可ライブラリである Laravel-authz が利用可能になりました。
PHP-Casbin は、PHP プロジェクト用の強力かつ効率的なオープンソース アクセス制御ライブラリです。さまざまなアクセス制御モデルに基づいて認可を強制するためのサポートを提供します。
キャビン | jCasbin | ノード-キャビン | PHP-キャビン |
本番環境に対応 | 本番環境に対応 | 本番環境に対応 | 本番環境に対応 |
PyCasbin | Casbin.NET | キャビン-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 属性を 1 つのモデル内でまとめて取得し、1 セットのポリシー ルールを共有できます。
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/) を使用して、Web ブラウザーに php-casbin モデルとポリシーを記述することもできます。プログラミング言語の IDE と同様に、 syntax highlighting
やcode completion
などの機能を提供します。
https://casbin.org/docs/tutorials
php-casbin は、アクセス許可を管理するための 2 つの API セットを提供します。
https://casbin.org/docs/en/adapters
https://casbin.org/docs/en/role-managers
モデル | モデルファイル | ポリシーファイル |
---|---|---|
ACL | 基本モデル.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_model.conf | 該当なし |
RESTful | keymatch_model.conf | キーマッチ_ポリシー.csv |
拒否オーバーライド | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
優先度 | 優先モデル.conf | 優先ポリシー.csv |
Web フレームワーク用の Authz ミドルウェア: https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
このプロジェクトは、貢献してくださるすべての人々のおかげで存在します。
支援者の皆様、ありがとうございました! 【後援者になる】
スポンサーになってこのプロジェクトを支援してください。あなたのロゴが Web サイトへのリンクとともにここに表示されます。 【スポンサーになる】
このプロジェクトは、Apache 2.0 ライセンスに基づいてライセンスされています。
問題や機能のご要望がございましたら、お問い合わせください。 PRも大歓迎です。