私はLinqToLdapを使用しており、LinqToLdap が提供する例を使用して、AD からすべてのユーザーを見つけようとしました。しかし、成功しませんでした。最初に、AD により適合するようにモデルを変更しようとしました
[DirectorySchema("DC=corp,DC=intern", ObjectClass = "User")]
public class User : DirectoryObjectBase{
[DistinguishedName]
public string DistinguishedName { get; set; }
[DirectoryAttribute("cn", ReadOnly = true)]
public string CommonName { get; set; }
[DirectoryAttribute]
public string Title { get; set; }
[DirectoryAttribute(StoreGenerated = true)]
public Guid ObjectGuid { get; set; }
[DirectoryAttribute(StoreGenerated = true)]
public SecurityIdentifier ObjectSid { get; set; }
[DirectoryAttribute("memberOf", ReadOnly = true)]
public Collection<string> GroupMemberships { get; set; }
}
そしてクエリ
public class LinqToLdapProvider{
private LdapConfiguration _cfg;
public LinqToLdapProvider(string domain){
_cfg = new LdapConfiguration();
_cfg.ConfigurePooledFactory(domain)
.MinPoolSizeIs(1)
.MaxPoolSizeIs(50)
.AuthenticateAs(new NetworkCredential("MyDomain.Username","MySecretPAssword"));
}
public void Query(){
using (var context = new DirectoryContext(_cfg)) {
context.Log = Console.Out;
var user = context.Query<User>(); // I expected this to return all users
}
}
}
しかし、その結果、すべてのサーバーとその他のものを含む非常に巨大なリストを取得しました...ドキュメント内で詳細情報を見つけようとし、ユーザー クラス ビットの DirectorySchema 属性を変更しようとしましたが、うまくいきませんでした。
これは、ユーザーが緑色のストロークを持つユーザーである場所を照会しようとしたパスです。