将身份验证令牌添加到 Spring Data Neo4j Rest

Posted

技术标签:

【中文标题】将身份验证令牌添加到 Spring Data Neo4j Rest【英文标题】:Adding Authentication Token to Spring Data Neo4j Rest 【发布时间】:2015-03-16 07:33:28 【问题描述】:

如何将 Neo4j Server 创建的身份验证令牌添加到 Spring Neo4j Rest 配置中

context.xml

                <?xml version="1.0" encoding="UTF-8"?>
            <beans xmlns="http://www.springframework.org/schema/beans"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
                xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

                <import resource="spring-data-context.xml" />

                <bean id="graphDatabaseService"
                    class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
                    <constructor-arg index="0" value="http://localhost:7474/db/data" />
                </bean>

            </beans>

【问题讨论】:

【参考方案1】:

根据 SpringRestGraphDatabase 类,还有两个参数可以传递给构造函数,即用户名和密码。 以下是您应该如何配置它。

<bean id="graphDatabaseService" class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
    <constructor-arg value="http://localhost:7474/db/data"/>
    <constructor-arg name="user" value="neo4j"/>
    <constructor-arg name="password" value="******"/>
</bean>

【讨论】:

【参考方案2】:

使用 Jersey 客户端的 HttpBasicAuthFilter 结束

你的参数应该是这样的:

            public static final String DATABASE_ENDPOINT = "http://localhost:7474/db/data";

            public static final String DATABASE_USERNAME = "neo4j";

            public static final String DATABASE_PASSWORD = "3c0a0a6ea1sdsdsdsdsdsdsdsdf2a94d";

        private String callRest(String query) 
                final String cypherUrl = ENDPOINT + "/cypher";
                Client c = Client.create();
                c.addFilter(new HTTPBasicAuthFilter(USERNAME, PASSWORD));
                WebResource resource = c.resource(cypherUrl);
                String request = "\"query\":\"" + query + "\"";
                ClientResponse response = resource.accept(MediaType.APPLICATION_JSON)
                        .type(MediaType.APPLICATION_JSON).entity(request)
                        .post(ClientResponse.class);
                String object = response.getEntity(String.class);
                response.close();
                return object;
        

如果最新的 Jersey 客户端尚未在您的依赖关系树中,则可以通过将其添加到您的 mvn pom 来找到它。

            <dependency>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-client</artifactId>
                <version>1.18.3</version>
            </dependency>

【讨论】:

以上是关于将身份验证令牌添加到 Spring Data Neo4j Rest的主要内容,如果未能解决你的问题,请参考以下文章

如何在http请求角度添加令牌

如何将角色添加到 asp 身份承载令牌

使用 Spring Boot 2 和 Spring Security 5 进行多因素身份验证

Spring Boot with Spring Boot:将基本身份验证与JWT令牌身份验证相结合[复制]

基于 Spring Security 令牌的身份验证

Spring应用程序基本身份验证通过keycloak