2016-09-27 2 views
-1

を受け取ると、ClearTextのTDSからjavaを介してユーザーパスワードを取得できますか? ldapsearch -v -D cn=root -w xxxxxx -s sub uid=testuser userPassword で、私は次のような結果を得ている:TDS - userPassword

enter image description here

パスワードが、その場合には次のとおりです。Joko2014!

私はそれを試してみましたJavaでは

:「バイナリ= userPassword属性を何

uid=testuser: null:null:{givenname=givenName: xxxx, sn=sn: xxx, pwdchangedtime=pwdChangedTime: 20160926173016.000000Z, mail=mail: [email protected], uid=uid: testuser, userpassword;binary=userPassword;binary: [[email protected], pwdreset=pwdReset: true, cn=cn: xxxx, description=description: xxxxxx;xxxxxx;I;xxxxxx} 

;バイナリ:

String[] attrIDs = {".....",....,"userPassword"} 
SearchControls ctls = new SearchControls(); 
ctls.setReturningAttributes(attrIDs); 
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE); 

NamingEnumeration<SearchResult> results = ctx.search(name, 
         filter, ctls); 

while (results.hasMore()) { 
    SearchResult entry = results.next(); 
    System.out.println(entry); 
} 

しかし、コンソールの出力がちょうどある[Bする@ 1a626f .. "とはどういう意味ですか、ここでパスワードを取得するにはどうすればいいですか?私はそれをエンコードする必要がありますか?はいの場合、どうすれば解決できますか? 他の操作属性の取得は問題ありません。

よろしく!

+0

LDAPサーバーが正しく構成されていない場合。これは、一方向のプロセスであるパスワードをハッシュする必要があります。サーバーを構成していない場合なぜあなたがすべきかについては、[ここ](http://stackoverflow.com/questions/2283937/how-should-i-ethically-approach-user-password-storage-for-later-plaintext-retrie/2287672#2287672)を参照してください。 – EJP

+0

サーバーが正しく設定されていれば、パスワードを受信できない、または正しく設定されていると思いますか? 「IBMセキュリティー・ディレクトリー・サーバーWeb管理ツール」を介した構成は可能ですか? 私は本当にパスワードを抽出し、別の場所にそれらを再度インポートする必要があるので。 – InfoEngi

+0

OpenLDAPサーバが正しく設定されていれば、平文パスワードを取得することはできません。あなたの質問がOpenLDAPに関するものであるときに、なぜIBM Security Directory Server Web管理ツールについて話しているのか分かりません。 – EJP

答えて

0

HASH(PASSWORD + SALT)パスワードストレージ(userPasswordプロパティのデフォルトの種類)で設定されたLDAPに入ると、元のパスワードをクリアテキストで取得することはできません。

+0

ハッシュ(パスワード+塩)で設定されているかどうか分かりますか?たぶん私はクリアテキストのパスワードを受け取るように変更することができます。 – InfoEngi

+0

これは通常設定オプションですが、私はOpenLDAPの設定にあまり精通していませんが、OpenLDAPのマニュアルページ/ドキュメント – Ironluca

+0

の設定オプションをTDSで見つけました。 「セキュリティプロパティ/パスワードの暗号化を管理する」には、AES256 - 暗号化が設定されています。 しかし、私は「ldapsearch -v -D cn = root -w xxxxxx -s sub uid = testuser userPassword」という暗黙のテキストでパスワードを見ることはできません。 – InfoEngi

0

私は、次の以前の質問LINK

は、そのアプローチの権利や可能ですを発見しましたか?それがために働くdoesntのため、それにuserPasswordが「ヌル」 Attribute userPassword = entry.getAttributes().get("userPassword");

あるようですので、「LDAPと私たちはあなたが元のパスワードのテキストは 次のコードを使用取得する必要がありますarray.ifバイトのデータを取得します:」 Attribute userPassword = attributes.get("userPassword"); String pwd = new String((byte[]) userPassword.get());

+0

いいえ、HASH(PASSWORD + SALT)を使用すると元のユーザーパスワードではなくpwd文字列にこの値が表示されます – Ironluca

関連する問題