2016-09-22 2 views
0

Neo4j Enterprise 3.0.6을 사용하여 AWS에 Neo4j 클러스터를 구축 중이며 현재 HAProxy 인스턴스를 Neo4j 인스턴스에 연결하려고합니다. 테스트 목적으로 HAProxy 인스턴스에서 Neo4j 인스턴스로의 I curl. neo4j enterprise 3.0.6 base64로 인코딩 된 자격 증명이 허용되지 않습니다.

curl --user "neo4j:password" http://10.0.0.181:7474/user/neo4j 

사용 나는 적절한 응답을 얻을 :

curl -H "Authorization: Basic bmVvNGo6cGFzc3dvcmQK" http://10.0.0.181:7474/user/neo4j 

Neo4j를 사용하여 기본 인증으로, 그러나

{ 
    "password_change_required" : false, 
    "password_change" : "http://10.0.0.181:7474/user/neo4j/password", 
    "username" : "neo4j" 
} 

는 Neo4j의 이전 버전에

{ 
    "errors" : [ { 
    "code" : "Neo.ClientError.Security.Unauthorized", 
    "message" : "Invalid username or password." 
    } 
} 

로 응답 (2.3.3, 아마도) 후자의 계획은 예상대로 진행되었습니다. 나는 여기에서 조금 길다. 기본 인증 헤더가있는 base64로 인코딩 된 문자열로 자격 증명을 제공 한 이후로는 documentation에 명시 적으로 설명되어 있습니다. 나는 여기서 무엇을 놓칠까요?

는 (I 트리플 base64로 인코딩이 올바른지 확인했다 : 문자열을 디코딩하는 것은 정확하게 전송해야 자격 증명을 제공합니다.)

답변

1

bmVvNGo6cGFzc3dvcmQKneo4j:password\n의 Base64 인코딩입니다 bmVvNGo6cGFzc3dvcmQ=실제 Base64 인코딩 반면 neo4j:password인데 후행을 반환하지 않습니다. 상세 모드에서 컬을 실행할 때 당신은 그것을 관찰 할 수있다 : Neo4j의

$ curl -v --user "neo4j:password" localhost:7474 
* Trying 127.0.0.1... 
* Connected to localhost (127.0.0.1) port 7474 (#0) 
* Server auth using Basic with user 'neo4j' 
> GET/HTTP/1.1 
> Host: localhost:7474 
> Authorization: Basic bmVvNGo6cGFzc3dvcmQ= 
> User-Agent: curl/7.43.0 
> Accept: */* 
> 
< ... 

이전 버전은 아마 디코딩 된 문자열을 손질.

$ echo -n neo4j:password | base64 
bmVvNGo6cGFzc3dvcmQ= 

또는

$ printf neo4j:password | base64 
bmVvNGo6cGFzc3dvcmQ= 
:

당신이 사용할 수있는, 제대로 자격 증명을 인코딩하는 방법
관련 문제