不支持的身份验证令牌,方案='none' 仅在禁用身份验证时允许: scheme='none' - Neo4j 身份验证错误

Posted

技术标签:

【中文标题】不支持的身份验证令牌,方案=\'none\' 仅在禁用身份验证时允许: scheme=\'none\' - Neo4j 身份验证错误【英文标题】:Unsupported authentication token, scheme='none' only allowed when auth is disabled: scheme='none' - Neo4j Authentication Error不支持的身份验证令牌,方案='none' 仅在禁用身份验证时允许: scheme='none' - Neo4j 身份验证错误 【发布时间】:2019-10-14 13:28:06 【问题描述】:

我正在尝试使用 neo4j-spark-connector 从 Spark 连接到 Neo4j。我在尝试连接到 Neo4j org.neo4j.driver.v1.exceptions.AuthenticationException: Unsupported authentication token, scheme='none' only allowed when auth is disabled: scheme='none' 时遇到了身份验证问题

我已检查并且我传递的凭据是正确的。不知道为什么会失败。

import org.neo4j.spark._
import org.apache.spark._
import org.graphframes._
import org.apache.spark.sql.SparkSession
import org.neo4j.driver.v1.GraphDatabase
import org.neo4j.driver.v1.AuthTokens

val config = new SparkConf()

config.set(Neo4jConfig.prefix + "url", "bolt://localhost")
config.set(Neo4jConfig.prefix + "user", "neo4j")
config.set(Neo4jConfig.prefix + "password", "root")

val sparkSession :SparkSession = SparkSession.builder.config(config).getOrCreate()

val neo = Neo4j(sparkSession.sparkContext)

val graphFrame = neo.pattern(("Person","id"),("KNOWS","null"), ("Employee","id")).partitions(3).rows(1000).loadGraphFrame


println("**********Graphframe Vertices Count************")
graphFrame.vertices.count

println("**********Graphframe Edges Count************")
graphFrame.edges.count


val pageRankFrame = graphFrame.pageRank.maxIter(5).run()
val ranked = pageRankFrame.vertices
ranked.printSchema()

val top3 = ranked.orderBy(ranked.col("pagerank").desc).take(3)

有人可以看看,让我知道同样的原因吗?

【问题讨论】:

Neo4jConfig.prefix 是什么? Neo4jConfig.prefix 是在 spark 中设置 neo4j 特定属性的前缀。它的值来自neo4j-spark 连接器的代码,是“spark.neo4j.bolt”。参考 - github.com/neo4j-contrib/neo4j-spark-connector/blob/master/src/… 我相信你忘记了端口号:bolt://localhost:7687 @RudyVerboven - 它也不适用于端口号。我已经试过了。 你是如何运行你的 spark 应用程序的?您是否尝试在 conf/spark-defaults.conf 中设置您的凭据? 【参考方案1】:

这可能是您的 neo4j.conf 文件的配置问题。这一行是否被注释掉了:

dbms.security.auth_enabled=false

【讨论】:

这没有被注释并且它的值被设置为true。当我将该值设置为 false 时,这意味着我已禁用身份验证,此时我的脚本也可以正常工作。这个变量的值应该是什么?【参考方案2】:

我遇到了类似的问题,创建以下 spring bean 解决了这个问题。

    @Bean
public org.neo4j.ogm.config.Configuration getConfiguration() 
    return new org.neo4j.ogm.config.Configuration.Builder()
            .credentials("neo4j", "secret")
            .uri("bolt://localhost:7687").build();


@Bean
public SessionFactory sessionFactory(org.neo4j.ogm.config.Configuration configuration) 
    return new SessionFactory(configuration,
            "<your base package>");

【讨论】:

以上是关于不支持的身份验证令牌,方案='none' 仅在禁用身份验证时允许: scheme='none' - Neo4j 身份验证错误的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 WCF 数据服务的身份验证方案

尝试将身份验证令牌存储为python中的系统变量,但在打印时返回None

Rails:在开发中禁用敲击 JWT 身份验证

从 Spotify 请求访问令牌时出现错误“仅支持有效的不记名身份验证”

如何禁用 JWT 令牌

如何仅在 Spring 中为微服务项目的外部客户端启用身份验证?