質問
オープンソースはありますか、 PHP based
, 、目的に使用できるロールベースのアクセス制御システム。 CodeIgniter
?
解決
Brandon Savage が PHP パッケージについてプレゼンテーションを行いました。アプリケーションACL" これにより、ロールベースのアクセスが実現される場合もあれば、実現されない場合もあります。 PHPGACL 同様に機能する可能性がありますが、確実には言えません。
ただ、私から言えることは、 Zend_ACL Zend Framework のコンポーネントは、ロールベースのセットアップを実行します (ただし、複数のロールを一度に確認するにはサブクラス化する必要があります)。確かに、これの面倒な点は Zend_ACL を取り出さなければならないことですが、モノリシック ダウンロード (または SVN チェックアウト) からの外部依存関係はないと思います。
Zend_ACL の優れた点は、ストレージに依存しないことです。毎回再構築することも、シリアル化するように設計することもできます (私は両方を組み合わせて使用し、キャッシュ用にシリアル化し、DB から再構築します)。
他のヒント
おそらく私は質問を誤解していますが、役割ベースのアクセス制御 (RBAC) の本質は次のことではありません。 避ける アクセス制御リスト (ACL)?
RBAC はアクセス制御リスト (ACL) とは異なります (...) 低レベルのデータ オブジェクトではなく、組織内で意味のある特定の操作にアクセス許可を割り当てるという点で。たとえば、アクセス制御リストを使用して、特定のシステム ファイルへの書き込みアクセスを許可または拒否することはできますが、そのファイルがどのような方法で変更されるかについては記載されていません。RBAC ベースのシステムでは、操作は金融アプリケーションで「クレジット アカウント」トランザクションを作成することになる場合があります (...)。操作は粒度が細かく、アプリケーション内でそれ自体に意味があるため、特定の操作を実行するためのアクセス許可の割り当てには意味があります。(引用: ウィキペディア)
Zend_ACL や言及されている他の実装の詳細はわかりませんが、ACL ベースである場合、ロールベースの承認に使用することはお勧めしません。
というオープンソースプロジェクトを作成しました。 PHP-バウンサー あなたにとって興味深いかもしれません。まだかなり新しいものですが、うまく機能し、設定も簡単です。既存のソリューションが私のニーズを満たしていないようだったので、最終的にこのソリューションを開発することになりました。これがお役に立てば幸いです!
phpgacl http://phpgacl.sourceforge.net/ 汎用の ACL ベースのアクセス制御フレームワークです
CI 固有の実装についてはわかりませんが、phpgacl を機能させるにはメイン クラス ファイルのみが必要であることはわかっています。したがって、CIとの統合は問題ないと思います。(私はCIを使って仕事をしています)
私が見つけた PHP 用の 2 つの RBAC ライブラリは次のとおりです。
実際に最初のものを PolyAuth で使用しました。 https://github.com/Polycademy/PolyAuth/
これは、NIST レベル 1 RBAC を含むフル機能の認証ライブラリです。はい、RBAC は ACL と同じではありません。私も Codeigniter を使用しています。必要なのは、PDO ドライバーを使用して接続 ID を渡すことだけです。その方法については、このチュートリアルを参照してください。 http://codebyjeff.com/blog/2013/03/codeigniter-with-pdo
CIライブラリであるKhaos ACLについて知りました...phpgacl とそれを CI に使用する方法もチェックしています...Zend ACL はまだチェックしていません。しかし、おそらく CI に「移植」できるでしょう。
CodeIgniter の DX_Auth プラグインを試してください。私は DX_Auth が持つ関数と同様の (むしろスーパーセット) 関数に取り組んでいます。私の CI アドオンのセットには、メニューの表示 (CSS 経由で制御可能)、コントローラーが呼び出される前のロールベースのアクセス制御、およびその他の機能が含まれています。近いうちに公開したいと思います。その際にプロジェクトの URL をお知らせします
RBAC != ACL - この質問に対する正しい答えはローランドだけです。
ところで、もちろん、あらゆる種類の権限システムを実装するのはフレームワークの重要な部分です。少なくとも、よく設計された RBAC システムが提供されない場合は、フレームワークを使用する意味がありません。単純なテンプレートを使用する方が良いかもしれません。任意の ORM レイヤーを備えたシステム。
Ruby や Django のようなフレームワークが、これらの最新のフレームワークが提供するもののサブセットとしてのみ「クローン」されるのは、PHP の世界ではよくあるアンチパターンです。典型的な症候群として、これらのフレームワークへの適切な ACL または RBAC の統合が欠如していることが考えられます。本質的には冗談です。現在、まともな RBAC 実装が付属しているのは Yii PHP フレームワークだけです。
道が寒いのはわかっていますが、新しいプロジェクトが立ち上がりました。
PHP-RBAC は、PHP 階層 NIST レベル 2 標準ロールベースのアクセス制御であり、かなり成熟しています。これも OWASP プロジェクトです。
で楽しんでいただければ幸いです http://phprbac.net
http://www.jframework.info (デッドリンク)
jFramework には、拡張機能を備えた標準の NIST レベル 2 RBAC があり、これは単一の SQLite データベース ファイル上で動作でき、徹底的にテストされており、手袋のように機能する、利用可能な中で最も高速であると言われています (ベンチマークを含む)。
jFramework DBAL に依存していますが、コード内の DBAL SQL クエリを目的の DBAL に置き換えるだけで済みます。もちろん、SOP 方式で jFramework を使用することもできます。
Ion Auth Library はユーザーとグループを使用します - https://github.com/benedmunds/CodeIgniter-Ion-Authしかし、それらを使用および管理するための機能する RBAC システムはありません。しかし、関数をホワイトにすることはできます。