グループ/ロールのメンバーシップに基づいて、ASP.Net のリソースへのアクセス許可を制御するセキュリティ モジュールがあります。Active Directory にグループ メンバーシップを照会し、このモジュールで使用されるカスタム ASP.Net ロール プロバイダーを作成しました。
セキュリティ チェックは、リクエストごとに次のように機能します (パフォーマンス上の理由からキャッシングが使用されますが、このリストからは除外されます)。
- ユーザー グループ メンバーシップのリストについて AD にクエリを実行する
- 要求されたリソースへのアクセス権を持つユーザーとグループのリストをデータベースに照会します
- AD からの結果をデータベースからの結果と比較します。ユーザーが明示的に権限を持っている場合、またはユーザーが属するグループが権限を持っている場合はアクセスを許可し、そうでない場合は許可しません。
問題は、ネストされたグループがある場合に発生します。ParentGroupとChildGroupの2 つのグループがあるとします。ここで、 ChildGroupは Active DirectoryのParentGroupのメンバーであり、ユーザーはChildGroupのメンバーです。上記のロジックに従って、ChildGroupにリソースへのアクセスを許可すると、ユーザーもリソースにアクセスできるようになります。
論理的には (とにかく私には) ParentGroupにリソースへのアクセスを許可すると、そのすべてのメンバー、および再帰的に取得されたサブグループとそのメンバーも、そのリソースにアクセスできるようになります。しかし、代わりに、私のロジックが機能する方法が原因で、リソースにアクセスできません。上記のリストのステップ 1 では ParentGroup が表示されず、 ChildGroupのみが表示され、ステップ 2 ではParentGroupのみが表示され、 ChildGroupは表示されません。
問題は、「論理的に」説明したように機能させるには、どこで問題を修正する必要があるか、別の方法よりもうまく機能する方法があるかどうかです。