主催
不正行為を防止する認証をより迅速に構築します。
API ファースト認証、ユーザーと組織の管理、マルチテナント SSO、MFA、デバイス フィンガープリントなどの Stytch をお試しください。
? Okta、Auth0、Keycloak などのオープンソースの ID およびアクセス管理ソリューションをお探しですか?詳細については、カスドアをご覧ください。
ニュース: 正しい jCasbin ポリシーの書き方についてまだ心配していますか? Casbin online editor
がお手伝いします! https://casbin.org/editor/ で試してみてください。
jCasbin は、Java プロジェクト用の強力かつ効率的なオープンソース アクセス制御ライブラリです。さまざまなアクセス制御モデルに基づいて認可を強制するためのサポートを提供します。
キャビン | jCasbin | ノード-キャビン | PHP-キャビン |
本番環境に対応 | 本番環境に対応 | 本番環境に対応 | 本番環境に対応 |
PyCasbin | Casbin.NET | キャビン-CPP | キャビンRS |
本番環境に対応 | 本番環境に対応 | ベータテスト | 本番環境に対応 |
write-article
、 read-log
などの権限を使用して、個々のリソースではなく、あるタイプのリソースをターゲットにする場合があります。特定の記事やログへのアクセスは制御されません。resource.Owner
のような構文シュガーを使用して、リソースの属性を取得できます。/res/*
、 /res/:id
などのパスと、 GET
、 POST
、 PUT
、 DELETE
などの HTTP メソッドをサポートします。jCasbin では、アクセス制御モデルは、PERM メタモデル (ポリシー、エフェクト、リクエスト、マッチャー)に基づいて CONF ファイルに抽象化されます。したがって、プロジェクトの承認メカニズムの切り替えまたはアップグレードは、構成を変更するのと同じくらい簡単です。利用可能なモデルを組み合わせて、独自のアクセス制御モデルをカスタマイズできます。たとえば、RBAC ロールと ABAC 属性を 1 つのモデル内でまとめて取得し、1 セットのポリシー ルールを共有できます。
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/) を使用して、Web ブラウザーに 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 は、アクセス許可を管理するための 2 つの API セットを提供します。
モデル管理とポリシー管理のための Web ベースの UI も提供します。
https://casbin.org/docs/adapters
https://casbin.org/docs/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
Spring Boot サポートを提供しています。casbin-spring-boot-starter を使用して SpringBoot で迅速に開発できます。
casbin-spring-boot-starter では、次の調整を行いました。
https://github.com/jcasbin/casbin-spring-boot-starter
このプロジェクトは、貢献してくださるすべての人々のおかげで存在します。
支援者の皆様、ありがとうございました! 【後援者になる】
スポンサーになってこのプロジェクトを支援してください。あなたのロゴがあなたの Web サイトへのリンクとともにここに表示されます。 【スポンサーになる】
このプロジェクトは、Apache 2.0 ライセンスに基づいてライセンスされています。
問題や機能のご要望がございましたら、お問い合わせください。 PRも大歓迎です。