0

AD LDAP への読み取り専用アクセス権を持つクエリ ユーザーとして LDAP にログインする必要がある機能があります。

ユーザーを照会して検索し、memberOf を除くほとんどのユーザー プロパティを列挙することができます。

これは、読み取り専用ユーザーとしてログインした場合にのみ発生します。問題のユーザーとしてログインすると、すべての属性を取得できます。私が間違っていることを知っている人はいますか?

DirectorySearcher search = new DirectorySearcher(entry);

search.Filter = "(sAMAccountName=" + loginName + ")";
search.PropertiesToLoad.Add("CN");
search.PropertiesToLoad.Add("memberOf");
search.PropertiesToLoad.Add("SN");
search.PropertiesToLoad.Add("givenName");
if (_Attributes != null)
{
    foreach (string attr in _Attributes)
    {
        search.PropertiesToLoad.Add(attr);
    }
}

SearchResult result = search.FindOne();

if (result == null)
    return null;

string usersName = "";
if (result.Properties.Count > 0)
{
    if (result.Properties.Contains("CN"))
    {
        attributes.Add("CN", result.Properties["CN"].Cast<string>().ToList());
        usersName = result.Properties["CN"].Cast<string>().FirstOrDefault();
    }
    if (result.Properties.Contains("SN"))
    {
        attributes.Add("SN", result.Properties["SN"].Cast<string>().ToList());
    }
    if (result.Properties.Contains("givenName"))
    {
        attributes.Add("givenName",     result.Properties["givenName"].Cast<string>.ToList());
    }
    if (result.Properties.Contains("memberOf"))
        ad_MemberOf = result.Properties["memberOf"].Cast<string>().ToList();
    }
}
4

1 に答える 1

1

これはセキュリティ機能です。「Pre-Windows 2000 Compatible Access」を有効にしていない場合、この属性へのアクセスは制限されます。

ドメインのルート レベルでこれを正しく有効にすると、すべてのユーザー アカウントのすべての「memberOf」属性にアクセスできるようになります。また、適切なアクセス権限がない場合に制限されるその他の属性にもアクセスできます。

または、'Pre-Windows 2000 Compatible Access' メカニズムの一部として提供される属性に対応する特定の属性にアクセスするためのアクセス許可を追加することもできます。

正しく読んでいる場合、追加する必要がある権限は次のとおりです。

'List Contents', 'Read All Properties' and 'Read Permissions'
于 2012-10-17T17:51:44.203 に答える