Драйвер Cassandra Java с защитой Kerberos

Я пытаюсь подключиться из java-драйвера Datastax к безопасному кластеру cassandra с включенным kerberos.

Пример кода подключения:

    cluster = Cluster.builder().addContactPoint(node).withCredentials("username","password").build();
    Metadata metadata = cluster.getMetadata();
    System.out.printf("Connected to cluster: %s\n",
            metadata.getClusterName());
    for (Host host : metadata.getAllHosts()) {
        System.out.printf("Datatacenter: %s; Host: %s; Rack: %s\n",
                host.getDatacenter(), host.getAddress(), host.getRack());

    }
    session = cluster.connect();

Я получаю следующую ошибку:

Исключение в потоке «основной» com.datastax.driver.core.exceptions.AuthenticationException: ошибка аутентификации на хосте /x.x.x.x: java.lang.RuntimeException: javax.security.auth.login.LoginException: невозможно получить пароль от пользователя

at com.datastax.driver.core.Connection.waitForSaslCompletion(Connection.java:204)
at com.datastax.driver.core.Connection.initializeTransport(Connection.java:170)
at com.datastax.driver.core.Connection.<init>(Connection.java:132)
at com.datastax.driver.core.Connection.<init>(Connection.java:59)
at com.datastax.driver.core.Connection$Factory.open(Connection.java:442)
at com.datastax.driver.core.ControlConnection.tryConnect(ControlConnection.java:205)
at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:168)
at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:81)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:662)
at com.datastax.driver.core.Cluster$Manager.access$100(Cluster.java:604)
at com.datastax.driver.core.Cluster.<init>(Cluster.java:69)
at com.datastax.driver.core.Cluster.buildFrom(Cluster.java:96)
at com.datastax.driver.core.Cluster$Builder.build(Cluster.java:585)
at com.datastax.training.SimpleClient.connect(SimpleClient.java:32)
at com.datastax.training.SimpleClient.main(SimpleClient.java:148)

Я использую DSE версии 3.1.3. Драйвер Java 1.0.3-dse.


person Ram    schedule 15.10.2013    source источник


Ответы (1)


В вашем примере кода вы используете учетные данные имени пользователя и пароля для аутентификации, которые не будут работать с Kerberos. В этом сообщении блога содержится подробная информация об использовании драйвера Java с защищенными кластерами DSE: http://www.datastax.com/dev/blog/accessing-secure-dse-clusters-with-cql-native-protocol

person beobal    schedule 17.10.2013
comment
Я не нашел никакой ошибки, говорящей об ошибке при получении темы для идентификации сервера. Это журналы сервера, когда я пытался подключиться - person Ram; 18.10.2013
comment
/var/log/krb5kdc.log 18 окт. 16:32:37 ‹FQDN› krb5kdc[3112](info): AS_REQ (3 etypes {3 1 16}) xxxx: NEEDED_PREAUTH: dse/‹ FQDN›@REALM.COM для krbtgt/[email protected], требуется дополнительная предварительная аутентификация 18 октября 16:32:37 ‹FQDN› krb5kdc[3112](info): AS_REQ (3 etypes {3 1 16}) xxxx: ПРОБЛЕМА: authtime 1382113957, etypes {rep=16 tkt=16 ses=16}, dse/‹FQDN›@REALM.COM для krbtgt/[email protected] Это ошибка затмения: Исключение в потоке main com.datastax.driver.core.exceptions.NoHostAvailableException: все хосты, которые пытались выполнить запрос, не удалось (пробовали: /xxxx - person Ram; 21.10.2013