1

私はldapデータベースを持っています。私は inetorgPerson オブジェクト クラスを使用しています。このクラスには userPassword 属性があります。userPassword 値は SHA 暗号です。userPassword 値を取得するために javax.naming.directory パッケージを使用しています。ただし、返される値は SHA パスワード値と同じではありません。どうすれば正しい値を取得できますか? 簡単なコードは次のとおりです。

public ArrayList<String> search(String base, String filter,String[] returningAttributes){
        ArrayList<String> result=new ArrayList<String>();
            SearchControls ctls = new SearchControls();
            ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
            ctls.setReturningAttributes(returningAttributes);

        NamingEnumeration resultEnum = null;
        try {
            resultEnum = ctx.search(base, filter, ctls);
              while (resultEnum.hasMore()) {
                SearchResult res = (SearchResult) resultEnum.next();

                // print DN of entry
               // System.out.println(res.getNameInNamespace());

                // print attributes returned by search
                Attributes attrs = res.getAttributes();
                NamingEnumeration e = attrs.getAll();
                while (e.hasMore()) {
                    Attribute attr = (Attribute) e.next();
                    result.add(attr.toString());
                }
                System.out.println();

            }
            return result;
        } catch (NamingException e) {

        }
        return null;
    }
4

2 に答える 2

3

LDAP の sha パスワードを jsf 2 パスワードと比較したい

いいえ、あなたはそれをしたくありません。新しい資格情報を使用して LDAPContext.reconnect() を実行し、LDAPに比較させたいとします。

于 2011-08-07T07:35:16.700 に答える
0

あなたの質問を理解しているかどうかわかりませんが、パスワード ハッシュが期待どおりでない場合、これが理由である可能性があります。

サーバーはソルト化されたパスワード ハッシュを保存します。これは とは異なりsha1(password)ます。

于 2011-08-06T15:50:50.623 に答える