1

ユーザーが属する AD グループのリストを取得する方法があります。コードは次のとおりです。

public static List<GroupPrincipal> GetGroups(string userName)
        {
            List<GroupPrincipal> result = new List<GroupPrincipal>();

            // establish domain context
            PrincipalContext yourDomain = new PrincipalContext(ContextType.Domain);
            UserPrincipal user = null;

            // find your user
           user = UserPrincipal.FindByIdentity(yourDomain, userName);

            // if found - grab its groups
            if (user != null)
            {
                PrincipalSearchResult<Principal> groups = user.GetGroups();   

                // iterate over all groups
                foreach (Principal p in groups)
                {
                    // make sure to add only group principals
                    if (p is GroupPrincipal)
                    {
                        result.Add((GroupPrincipal)p);
                    }
                }
            }

            return result;
        }

IE と Chrome の両方で、これは正常に機能しますが、Firefox では常に DirectoryServicesCOMException が返され、それがuser = UserPrincipal.FindByIdentity(yourDomain, userName);どのような例外なのかさえわかりません。誰かがエラーの内容とその修正方法を説明してもらえますか? どうもありがとう!

4

1 に答える 1

3

呼び出しを次のように変更します。

using (HostingEnvironment.Impersonate()){
    user = UserPrincipal.FindByIdentity(yourDomain, userName); 
}

アプリケーション プールに AD 権限があることを確認する必要があります。これにより、AD サーバーにクエリを実行する権限がない可能性があるユーザーの資格情報ではなく、ホスティング環境の資格情報 (Web アプリ プール ID) を使用して、基になる AD 呼び出しが実行されます。

于 2013-10-01T21:12:47.527 に答える