2

次のコードを使用して、Active Directory 上の Android アプリケーションからユーザーを認証するために unboundid プリミティブを使用しています。

public boolean getConnection() {
    LDAPConnection connection = new LDAPConnection();
    try {
        connection.connect("my.ldap.com", 389);
        SearchResult searchResult = connection.search("XXX",SearchScope.SUB, "(uid="+username+")");
        if(searchResult.getEntryCount() != 1) {
            return false;
        }
        else {
            String dn = searchResult.getSearchEntries().get(0).getDN();

            try {
                connection = new LDAPConnection("XXX", 389, dn, password);
                return true;
            }
            catch (LDAPException e) {
                return false;
            }
        }
    } catch (LDAPException e) {
        e.printStackTrace();
    }
    return true;
}

私の質問は次のとおりです。パスワードはその関数では明確に読み取れるため、AD のものと比較するために LDAP に「送信」するために暗号化されているかどうか、またどのように暗号化されているか知っていますか?

4

1 に答える 1

2

使用しているような単純なバインド リクエストは、パスワードを保護するために何もしません。クライアントとサーバー間の通信を監視できる可能性のある人に公開されないようにするために、その通信を SSL や StartTLS などで保護する必要があります。

暗号化されていない接続でもパスワードを保護する他の認証メカニズム (Active Directory がサポートしていると思われる DIGEST-MD5 SASL メカニズムなど) があります。残念ながら、Android API には必要な SASL サポートが含まれていないため、Android でこれらの認証メカニズムを使用するのは簡単ではありません。

于 2013-03-22T16:48:32.603 に答える