私は、さまざまな言語 (Java と C# など) で記述されたモジュールで構成されるアプリケーションに取り組んでおり、さまざまなマシン (現在は LAN 内) で実行されているため、大きなものではありませんが、分散されています)。私たちは、機能に役割ベースのアクセス許可を実装するための合理的なアプローチを探しています (機能のどの部分を呼び出す資格があるかを構成するため)。
現在、これは、ユーザー名をユーザーが使用を許可されているダイアログ要素の GUI ID にマッピングするカスタム データベース テーブル (私の考えではありませんでした。念のために言っておくと…) と、モジュールの 1 つに「管理者」機能を持たせることで解決されています。これらの値を設定します。このテーブルへのこの直接書き込みは、特に同時書き込み (「admin」モジュールの) と読み取り (データベース トランザクションは同時実行処理を提供する必要がありますが…この場合、これで十分ですか?)。
したがって、私の考えは、パーミッションの設定と読み取りの両方でアクセスする必要があるすべてのモジュールからアクセスできる中央サービス (できれば C# で作成されますが、フレームワークがこれをより適切にサポートする場合は Java も問題ありません) です。このサービスは、並行性の問題を防ぐことができます。もちろん、その背後では、アクセス許可を格納するためにまだデータベースを使用します。
このアプローチについてどう思いますか?サービスがボトルネックになるのではないでしょうか? しかし、それは私にとって正しいと「感じます」。車輪の再発明のようにゼロからこれを行うことは、私にとって正しくないと感じます。このサービスは、(ASP).NET によって提供される認証および承認サブフレームワークのようなものでしょうか? それとも Active Directory? しかし、その焦点はより粗いものに見えます (アプリケーション内の機能ではなく、ファイル、ディレクトリ、プリンターなど)。このトピックに関するあなたの経験を教えていただけますか?
よろしくお願いします!
検索中に見つけたいくつかのポインターを次に示します。
http://en.wikipedia.org/wiki/Role-based_access_control
ADFS と WIF を使用した役割ベースのアクセス許可のストレージ アクセス
許可ベースのセキュリティ モデルの設計
最適な役割ベースのアクセス制御 (RBAC)データベース モデル