1

ASP.NET MVC3 アプリケーションがあります。Window ベースの認証を追加しました。一部のコントローラーでは、さらに承認を行う必要があります。

たとえば、使用しようとした「ABCGroup」の設定ページを表示可能にしたい: IsInRole("ABCGroup") メソッド。ユーザーが直接メンバーである場合は機能しました。

ログインしたユーザーが直接 ABCGroup のメンバーでない場合、IsInRole() は機能しません。たとえば、ユーザーが管理者グループの一部であり、管理者グループが「ABCGroup」のメンバーである場合、IsInRole("ABCGroup" は、管理者がアプリケーションを開こうとすると常に false を返します。

別の方法として、カスタム Authorize 属性を作成しました。その属性は、(DirectryEntry クラスを使用して) 許容可能なグループのコレクションを作成し、ログインしているユーザーのグループ コレクションを選択し (HttpContext.Current.Request.LogonUserIdentity.Groups を使用して)、許可されたコレクションで。

機能しましたが、一部のドメインでは失敗しました。

「ABCGroup」のメンバーは次のとおりです。 1. 管理者

「管理者」には以下が含まれます: 1.管理者 2. ラボ/管理者 3. ラボ/ドメイン管理者

「lab\administrator」としてシステムにログインしました [lab はドメインです]。アプリケーションを開くと、資格情報を求められました。資格情報ダイアログで、lab.sub.sub2\administrator とパスワードを入力すると機能しましたが、「superdomain.lab.sub.sub2\administrator」と入力すると失敗します。デフォルトでは、システムは「superdomain.lab.sub.sub2\administrator」を使用しているため、資格情報を要求されます。

LoggedUser.IsInRole(:Role name:) のようなグループの下でログインしているユーザーのアクセス能力を単純に検証する関数はありますか?

CheckTokenMembership() を見ましたが、C# でhttp://www.pinvoke.net/default.aspx/advapi32.checktokenmembershipから試してみましたが、本当に使用できませんでした

4

0 に答える 0