DSE 图形验证错误

DSE Graph authentication error

在全新安装中,DSE Graph 向 Gremlin 控制台抛出错误,抱怨身份验证配置。

Gremlin 控制台正常启动:

plugin activated: tinkerpop.tinkergraph 
plugin activated: tinkerpop.server 
plugin activated: tinkerpop.utilities 
gremlin> :remote connect tinkerpop.server conf/remote.yaml
==>Configured cassan-1-vm.c.myklovr-dev.internal/10.128.0.4:8182

但是当您尝试对 Gremlin 服务器进行任何操作时,您会收到错误消息:

    gremlin> :> 1+1 
ERROR 18:11:25,717 Could not process the response javax.security.sasl.SaslException: Failure to initialize security context
            at com.sun.security.sasl.gsskerb.GssKrb5Client.<init>(GssKrb5Client.java:149) ~[na:1.8.0_101]
            at com.sun.security.sasl.gsskerb.FactoryImpl.createSaslClient(FactoryImpl.java:63) ~[na:1.8.0_101]
            at javax.security.sasl.Sasl.createSaslClient(Sasl.java:384) ~[na:1.8.0_101] ... Caused by: org.ietf.jgss.GSSException: Invalid name provided (Mechanism level: KrbException: Cannot locate default realm)
            at sun.security.jgss.krb5.Krb5NameElement.getInstance(Krb5NameElement.java:129) ~[na:1.8.0_101]
            at sun.security.jgss.krb5.Krb5MechFactory.getNameElement(Krb5MechFactory.java:95) ~[na:1.8.0_101]
            at sun.security.jgss.GSSManagerImpl.getNameElement(GSSManagerImpl.java:203) ~[na:1.8.0_101]
            at sun.security.jgss.GSSNameImpl.getElement(GSSNameImpl.java:477) ~[na:1.8.0_101]
            at sun.security.jgss.GSSNameImpl.init(GSSNameImpl.java:201) ~[na:1.8.0_101]
            at sun.security.jgss.GSSNameImpl.<init>(GSSNameImpl.java:170) ~[na:1.8.0_101]
            at sun.security.jgss.GSSManagerImpl.createName(GSSManagerImpl.java:138) ~[na:1.8.0_101]
            at com.sun.security.sasl.gsskerb.GssKrb5Client.<init>(GssKrb5Client.java:107) ~[na:1.8.0_101]
            ... 27 common frames omitted Security error - check username/password and related settings

问题是:如何克服这个错误?

这个已经试过了:

  1. 在 dse.yaml
  2. 中停用 Kerberos 身份验证
  3. 将 krb5.conf 重置为默认文件(DSE 沙箱中的文件)

我们找不到对此的绝妙解释。

作为变通方法,我们从 datastax 安装程序(而不是 yum)再次安装,这个问题没有发生。

我也有类似的问题。我解决的方法是明确输入用户名和密码。 确保您的 remote.yaml 文件 dse/resources/graph/gremlin-console/conf/ 具有与此类似的结构。

无需重启即可生效。

hosts: [localhost] port: 8182 username: cassandra password: cassandra serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true, ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }} connectionPool: { maxContentLength: 65536000, enableSsl: false }

也列在这里: https://docs.datastax.com/en/latest-dse/datastax_enterprise/sec/graphSec.html 我从默认remote.yaml更改的三个属性是用户名、密码、enableSsl