2009-08-04 17 views
2

私が取り組んでいるプロジェクトは、ユーザーを認証するために顧客のActive Directoryと統合されます。私はユーザーのパスワードを取得するいくつかのコードを記述しようとしていましたが、Active Directoryはポート636のSSL接続を介してのみ関連するプロパティを公開することになります。C#:SSLを有効にしてActive Directoryに接続する方法

次のコードはSSLを使用せずにプログラムで接続します「がtは、パスワードのプロパティを参照してください。

static void Main(string[] args) 
{ 
    DirectoryEntry entry = new DirectoryEntry(@"LDAP://<IP>/CN=LDAP Test,CN=Users,DC=customer,DC=com"); 
    entry.AuthenticationType = AuthenticationTypes.None; 
    entry.Username = "CN=LDAP Test,CN=Users,DC=customer,DC=com"; 
    entry.Password = "<password>"; 
    if (entry != null) 
    { 
     foreach (Object propName in entry.Properties.PropertyNames) 
     { 
      Console.WriteLine((String)propName); 
     } 
    } 
} 

私が述べた例外を取得し、SSLを使用するようにコードを変更すると、不明なエラー(0X80005000)」。

Active DirectoryをホストするサーバーでSSLを有効にし、同じサーバーにMicrosoft CAをインストールし、CAから証明書を取得しました。

Apache Directory Studioを使用してSSL経由でActive Directoryに接続できますが、パスワードのプロパティは表示されません。

次のコードは、私はSSLを使用して接続するために使用しようとしているものを示しています

static void Main(string[] args) 
{ 
    DirectoryEntry entry = new DirectoryEntry(@"LDAPS://<IP>:636/CN=LDAP Test,CN=Users,DC=customer,DC=com"); 
    entry.AuthenticationType = AuthenticationTypes.SecureSocketsLayer; 
    entry.Username = "CN=LDAP Test,CN=Users,DC=customer,DC=com"; 
    entry.Password = "<password>"; 
    if (entry != null) 
    { 
     foreach (Object propName in entry.Properties.PropertyNames) 
     { 
      Console.WriteLine((String)propName); 
     } 
    } 
} 

私はどここれといくつかの援助で行くことにはわからないいただければ幸いです。

+0

関連:http://stackoverflow.com/questions/287100/setting-up-ssl-in-active-directory-how-to/291826 –

+0

ADAMよくある質問はここにある:のhttp:/ /www.microsoft.com/windowsserver2003/adam/ADAMfaq.mspx#EOD –

+0

この質問のタイトルは、誤解を招くようなものです。「Active Directoryからユーザーのパスワードを取得するにはどうすればよいですか? 「SSLを有効にしてActive Directoryに接続する」とは何の関係もありません。 – Bratch

答えて

2

私は、ユーザーのパスワードを取得するいくつかのコード を書き込もうとしてきた...

これはあなたのSSLの問題とは無関係ですが、私はアクティブからユーザーのパスワードを取得するとは思いませんディレクトリが可能です。ハッシュを格納するだけなので、ユーザーのプロパティを照会するときに「パスワード」プロパティーを受け取らないのはなぜですか。

更新回答

あなたのコメントを読んだ後、それはあなたがセキュリティハッシュが含まれているunicodePwd属性を探しています表示されます。 MSDN informationによると、その属性への書き込みには特殊なSSL接続が必要ですが、書き込み専用の属性なので、それを読み取ることはできません。

具体的にMSDNから:

unicodePwd属性は、LDAP検索によって返されることはありません。

がここにも私は同じことを言っているようだたフォーラムの投稿です:

ユーザーのパスワードが unicodePwd属性でユーザーオブジェクトに Active Directoryに格納されています。この の属性は の制限された条件の下で記述できますが、セキュリティ上の理由から を読むことはできません。 (Source

+0

それは私が後にしているハッシュです。私は自分の投稿がそれについてもっと明確にできると認めます。その目的は、別のシステムから受信したハッシュをActive Directoryに格納されているハッシュと比較または承認することです。 –

+0

私はハッシュの取得に関する私の答えを更新しました。 –

0

サーバーの証明書とルート証明書をローカルストアに追加してみてください。これを行う最も簡単な方法は、IEを使用してhttps://your.domain.contoller:636に接続することです。次に、すべての証明書画面をクリックし、店舗に追加します。