不支持的身份验证令牌,方案='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 身份验证错误的主要内容,如果未能解决你的问题,请参考以下文章
尝试将身份验证令牌存储为python中的系统变量,但在打印时返回None