Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ApacheTomcat的JDBCRealm安装Neo4j_Tomcat_Neo4j_Jdbcrealm - Fatal编程技术网

使用ApacheTomcat的JDBCRealm安装Neo4j

使用ApacheTomcat的JDBCRealm安装Neo4j,tomcat,neo4j,jdbcrealm,Tomcat,Neo4j,Jdbcrealm,我们正在尝试使用JDBCRealm通过neo4j数据库对用户进行身份验证。 我们遵循了JDBCRealm文档中的所有步骤,我们认为neo4j不受支持 当尝试验证用户身份时,它会发送非密码语言的查询。 例如,我们得到: 原因:java.lang.RuntimeException:执行cypher语句[{code=Neo.ClientError.Statement.InvalidSyntax]时出错,消息=无效输入“L”:应为“t/t”行第1列第3列偏移量:2 从user_name={1}的用户中选

我们正在尝试使用JDBCRealm通过neo4j数据库对用户进行身份验证。 我们遵循了JDBCRealm文档中的所有步骤,我们认为neo4j不受支持

当尝试验证用户身份时,它会发送非密码语言的查询。 例如,我们得到:

原因:java.lang.RuntimeException:执行cypher语句[{code=Neo.ClientError.Statement.InvalidSyntax]时出错,消息=无效输入“L”:应为“t/t”行第1列第3列偏移量:2 从user_name={1}的用户中选择user_pass ^}]

填写HTTP基本身份验证表单并提交时出错

详情:

我们将JDBCRealm添加到tomcat server.xml中

我们将用户身份验证添加到web.xml文件中的所有web应用页面

我们使用基本身份验证

JDBCRealm甚至可能不支持neo4j吗


谢谢。

您不能将JDBCRealm与Neo4j一起使用。原因是JDBCRealm根据您的配置表名、列等在后台构建SQL语句

Neo4j的JDBC驱动程序只是Cypher的传输层,因此不能发送SQL


我可以考虑为tomcat创建一个CypherRealm,它会发出类似MATCH u:User{name:{name}}返回u的消息。

您不能将JDBCRealm与Neo4j一起使用。原因是JDBCRealm根据您的配置表名、列等在后台构建SQL语句

Neo4j的JDBC驱动程序只是Cypher的传输层,因此不能发送SQL

我可以考虑为tomcat创建一个CypherRealm,它会发出类似MATCH u:User{name:{name}}返回u的消息。

一般来说,您需要区分JDBCrealm! 有些领域使用的是非常静态的SQL,例如,可配置的只有用户名、密码、db url等值,但有些领域足够灵活,可以包含自定义SQL或,这在您的情况下非常有用,甚至是CQL

很长一段时间以来,我们一直使用Tomcat领域配置身份验证和授权。我们切换到ApacheShiro并使用Shiro领域org.Apache.Shiro.Realm.jdbc.JdbcRealm,在Shiro.ini中配置

Shiro接受灵活的配置和您自己的CQL用于

使用者 角色 权限可选 下面是一个如何设置Tomcat和shiro.ini的示例

1在webapp context.xml中设置JNDI资源

->密码匹配器也需要配置!查看ApacheShiro文档一般来说,您需要区分JDBCRealms! 有些领域使用的是非常静态的SQL,例如,可配置的只有用户名、密码、db url等值,但有些领域足够灵活,可以包含自定义SQL或,这在您的情况下非常有用,甚至是CQL

很长一段时间以来,我们一直使用Tomcat领域配置身份验证和授权。我们切换到ApacheShiro并使用Shiro领域org.Apache.Shiro.Realm.jdbc.JdbcRealm,在Shiro.ini中配置

Shiro接受灵活的配置和您自己的CQL用于

使用者 角色 权限可选 下面是一个如何设置Tomcat和shiro.ini的示例

1在webapp context.xml中设置JNDI资源


->密码匹配器也需要配置!查看Apache Shiro文档

neo4j是否设计用于支持用户名/密码数据?当然,它们仅提供给服务器或JDBC中的驱动程序。neo4j是否设计用于支持用户名/密码数据?当然,它们仅提供给服务器或JDBC中的驱动程序。
<Resource auth="Container" driverClassName="org.neo4j.jdbc.Driver" maxIdle="30" maxTotal="50" maxWaitMillis="10000" 
            name="jdbc/SomeJndiNameForYourNeo4jDbResource" url="jdbc:neo4j:bolt://localhost" type="javax.sql.DataSource" username="neo4j" password="neo4j"/>
ds = org.apache.shiro.jndi.JndiObjectFactory
ds.resourceName = java:comp/env/jdbc/SomeJndiNameForYourNeo4jDbResource

jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.permissionsLookupEnabled = true
jdbcRealm.authenticationQuery = MATCH (u:User{email:?}) RETURN u.password
jdbcRealm.userRolesQuery = MATCH (u:User{email:?})-[hr:HAS_ROLE]->(r:Role) RETURN r.name
jdbcRealm.permissionsQuery = MATCH (:User{email:?})-[:HAS_PERMISSION]->(p:Permission) RETURN p.name

jdbcRealm.credentialsMatcher = $passwordMatcher
jdbcRealm.dataSource=$ds
securityManager.realms = $jdbcRealm