수색…


인증 된 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의 세 부분으로 연결을 만듭니다.

// 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가 있습니다. 앰퍼샌드는 두 개의 쿼리 절에 대한 부울 "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의 세 부분으로 연결을 만듭니다.

// 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