암호화를 사용하여 바인딩
네트워크를 통해 교환되는 중요한 데이터를 암호화해야 합니다. 이를 허용하기 위해 ADSI는 Kerberos 및 SSL(Secure Sockets Layer)의 두 가지 암호화 유형을 지원합니다. 두 유형의 암호화 모두 바인딩에 ADsOpenObject 또는 IADsOpenDSObject::OpenDSObject 를 사용해야 합니다.
GetObject 및 ADsGetObject 는 이 경우 바인딩에 사용할 수 없습니다. 이러한 함수는 ADSI에서 사용하는 LDAP 요청과 디렉터리 서버에서 반환된 데이터가 네트워크를 통해 일반 텍스트로 전송되도록 하기 때문입니다. 디버깅을 위해 네트워크 모니터를 사용하여 클라이언트와 디렉터리 서버 간의 LDAP 요청 및 데이터를 볼 수 있도록 암호화를 해제하는 것이 유용합니다.
Kerberos 기반 암호화
Kerberos 기반 암호화를 사용하려면 ADsOpenObject 또는 IADsOpenDSObject::OpenDSObject를 호출할 때 ADS_USE_SEALING 플래그를 지정합니다. ADS_USE_SEALING 플래그를 사용하여 수신된 데이터가 전송된 데이터와 동일한지 확인하기 위해 데이터 무결성을 확인할 수도 있습니다. ADS_USE_SEALING 플래그를 지정하면 ADS_USE_SIGNING 플래그도 자동으로 지정됩니다. 두 플래그 모두 다음 조건에서만 작동하는 Kerberos 인증이 필요합니다.
- 클라이언트 컴퓨터는 Windows 도메인 또는 Windows 도메인에서 신뢰할 수 있는 도메인에 로그온해야 합니다.
- ADsOpenObject 또는 IADsOpenDSObject::OpenDSObject 를 null 자격 증명으로 호출해야 합니다. 즉, 대체 자격 증명을 지정할 수 없습니다.
SSL 기반 암호화
SSL 기반 암호화를 사용하려면 ADsOpenObject 또는 IADsOpenDSObject::OpenDSObject를 호출할 때 ADS_USE_SSL 플래그를 지정합니다. ADS_USE_SSL 플래그만 지정하면 ADSI는 SSL 포트 636을 연 다음 해당 SSL 채널에 대해 간단한 바인딩을 수행합니다. ADS_SECURE_AUTHENTICATION 플래그와 ADS_USE_SSL 플래그를 모두 지정하는 경우 바인딩 동작은 호출이 이루어진 클라이언트에 따라 달라집니다. 지원되지 않는 Windows 버전에서 ADSI는 먼저 SSL 채널을 열고 사용자 이름과 암호가 모두 null인 경우 지정된 사용자 이름 및 암호 또는 현재 사용자 컨텍스트를 사용하여 간단한 바인딩을 수행합니다. 지원되는 Windows 버전에서 ADSI는 간단한 바인딩이 아닌 보안 인증을 수행합니다.
Active Directory와 통신하는 동안 SSL 기반 암호화를 사용하려면 Active Directory에서 PKI(공개 키 인프라)를 사용하도록 설정해야 합니다. Active Directory 서버 자체 중 하나를 포함하여 Active Directory의 서버 중 하나에서 엔터프라이즈 인증 기관을 설정하여 PKI를 사용하도록 설정할 수 있습니다. 엔터프라이즈 인증 기관을 설정하면 Active Directory 서버가 SSL 기반 암호화를 수행하는 데 사용할 수 있는 서버 인증서를 가져옵니다.