9

ASP.Net4.0MVCを使用してActiveDirectoryをクエリしています。ユーザーのグループメンバーシップのリストを取得しようとしていますが、それを繰り返します。私は奇妙な問題を抱えています。私が使用していたグループを取得するには:

   PrincipalSearchResult<Principal> groups = up.GetGroups();

これはローカルホストではうまく機能しましたが、IIS6に移動すると空のセットを返します。だから私はこれを使ってみました:

    PrincipalSearchResult<Principal> groups = up.GetAuthorizationGroups();

これはIIS6でうまく機能しましたが、ローカルホストで空のセットを返します。これら2つの方法の違いは何ですか?ローカルホストではなくIIS6で使用できるのはなぜですか?IIS6ではなくローカルホストでもう一方を使用できるのはなぜですか?

4

2 に答える 2

8

理由の部分は答えられましたが、これは2つの方法の機能の違いを知りたい人に役立つかもしれません。MSドキュメントから:

GetGroups-現在のプリンシパルがメンバーであるグループを指定するグループオブジェクトのコレクションを返します。

このオーバーロードされたメソッドは、プリンシパルが直接メンバーであるグループのみを返します。再帰検索は実行されません。

GetAuthorizationGroups-このユーザーがメンバーであるすべての許可グループを含むプリンシパルオブジェクトのコレクションを返します。この関数は、セキュリティグループであるグループのみを返します。配布グループは返されません。

このメソッドは、すべてのグループを再帰的に検索し、ユーザーがメンバーであるグループを返します。返されるセットには、システムが承認の目的でユーザーをメンバーと見なす追加のグループも含まれる場合があります。

したがって、ユーザーが直接メンバーであるすべてのGetGroupsグループを取得し、ユーザーが直接または間接メンバーであるすべての許可グループを取得します。GetAuthorizationGroups

それらの名前の付け方にもかかわらず、一方は他方のサブセットではありません。GetGroupsによって返されるのではなく、によって返されるグループが存在する場合がありGetAuthorizationGroups、その逆もあります。

于 2018-09-17T15:51:43.577 に答える
7

GetAuthorizationGroups()ADのtokenGroupsへの呼び出しを想定しています。これを読むには、サービスアカウント(またはネットワークサービスの場合はIISマシンアカウント)がADのWindows認証アクセスグループに含まれている必要があります。

于 2012-06-22T21:02:47.400 に答える