C# Language
System.DirectoryServices.Protocols.LdapConnection
サーチ…
認証されたSSL LDAP接続、SSL証明書が逆DNSと一致しません
サーバと認証情報のいくつかの定数を設定します。 LDAPv3を想定していますが、簡単に変更できます。
// Authentication, and the name of the server.
private const string LDAPUser = "cn=example:app:mygroup:accts,ou=Applications,dc=example,dc=com";
private readonly char[] password = { 'p', 'a', 's', 's', 'w', 'o', 'r', 'd' };
private const string TargetServer = "ldap.example.com";
// Specific to your company. Might start "cn=manager" instead of "ou=people", for example.
private const string CompanyDN = "ou=people,dc=example,dc=com";
実際には、LdapDirectoryIdentifier(サーバー)とNetworkCredentialsの3つの部分で接続を作成します。
// Configure server and port. LDAP w/ SSL, aka LDAPS, uses port 636.
// If you don't have SSL, don't give it the SSL port.
LdapDirectoryIdentifier identifier = new LdapDirectoryIdentifier(TargetServer, 636);
// Configure network credentials (userid and password)
var secureString = new SecureString();
foreach (var character in password)
secureString.AppendChar(character);
NetworkCredential creds = new NetworkCredential(LDAPUser, secureString);
// Actually create the connection
LdapConnection connection = new LdapConnection(identifier, creds)
{
AuthType = AuthType.Basic,
SessionOptions =
{
ProtocolVersion = 3,
SecureSocketLayer = true
}
};
// Override SChannel reverse DNS lookup.
// This gets us past the "The LDAP server is unavailable." exception
// Could be
// connection.SessionOptions.VerifyServerCertificate += { return true; };
// but some certificate validation is probably good.
connection.SessionOptions.VerifyServerCertificate +=
(sender, certificate) => certificate.Subject.Contains(string.Format("CN={0},", TargetServer));
LDAPサーバーを使用します。たとえば、すべてのobjectClass値に対してuseridで誰かを検索します。コンパウンド検索を示すためにobjectClassが存在します。アンパサンドは、2つのクエリー句のブール値「and」演算子です。
SearchRequest searchRequest = new SearchRequest(
CompanyDN,
string.Format((&(objectClass=*)(uid={0})), uid),
SearchScope.Subtree,
null
);
// Look at your results
foreach (SearchResultEntry entry in searchResponse.Entries) {
// do something
}
スーパーシンプル匿名LDAP
LDAPv3を想定していますが、簡単に変更できます。これは匿名の暗号化されていないLDAPv3 LdapConnectionの作成です。
private const string TargetServer = "ldap.example.com";
実際には、LdapDirectoryIdentifier(サーバー)とNetworkCredentialsの3つの部分で接続を作成します。
// Configure server and credentials
LdapDirectoryIdentifier identifier = new LdapDirectoryIdentifier(TargetServer);
NetworkCredential creds = new NetworkCredential();
LdapConnection connection = new LdapConnection(identifier, creds)
{
AuthType=AuthType.Anonymous,
SessionOptions =
{
ProtocolVersion = 3
}
};
接続を使用するには、このようなものは、スミス
SearchRequest searchRequest = new SearchRequest("dn=example,dn=com", "(sn=Smith)", SearchScope.Subtree,null);
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow