暗号化を使用したバインド
ネットワーク経由で交換される機密データは暗号化する必要があります。 これを可能にするために、ADSIではKerberosとSecure Sockets Layer (SSL) の2種類の暗号化がサポートされています。 どちらの種類の暗号化でも、バインドに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ポートを開き、そのSSLチャネルで単純なバインドを実行します。 ADS_SECURE_AUTHENTICATIONフラグとADS_USE_SSLフラグの両方が指定されている場合、バインドの動作は呼び出し元のクライアントによって異なります。 サポートされていないバージョンのWindowsでは、ADSIは最初にSSLチャネルを開き、指定されたユーザー名とパスワードを使用して単純なバインドを実行します。ユーザー名とパスワードの両方がnullの場合は、現在のユーザーコンテキストを使用します。 サポートされているバージョンのWindowsでは、ADSIは単純なバインドではなく、セキュリティで保護された認証を実行します。
Active Directoryとの通信中にSSLベースの暗号化を使用するには、Active Directoryで公開キー基盤 (PKI) が有効になっている必要があります。 PKIを有効にするには、Active Directory内のいずれかのサーバー (Active Directoryサーバー自体の1つを含む) にエンタープライズ証明機関を設定します。 エンタープライズ証明機関を設定すると、Active DirectoryサーバーはSSLベースの暗号化に使用できるサーバー証明書を取得します。