2017-04-25 4 views
1

아래에 간단히 설명하면 인증을 시도 할 때 사용자가 성공적으로 가져 오지만 INVALID_PASSWORD이 표시됩니다.sha-1 해시 된 암호를 사용하여 사용자를 firebase에 가져 오기

saltpasswordHash 여기서 {SSHA} 인증 스키마를 사용하여 LDAP 사용자 디렉토리 (apacheds)에서 가져옵니다.

var sha1Hex = require('sha1-hex'); 

var saltHex = Buffer.from("ktuF+dzYMQU=", 'base64').toString('hex'); 
var passwordHex = Buffer.from("demo", 'utf-8').toString('hex'); 

var hash = sha1Hex(Buffer.from(passwordHex + saltHex, 'hex')); 
var hashBase64 = Buffer.from(hash, 'hex').toString('base64'); 
console.log(hashBase64); 

중포 기지 CLM 가져 오기 명령 :

firebase auth:import users.json --hash-algo=SHA1 --rounds=80 

users.json 파일 :

{ 
    "users": [ 
    { 
     "localId": "3c872eee-e86c-4b44-9840-bcebaac18f2c", 
     "email": "[email protected]", 
     "salt": "ktuF+dzYMQU=", 
     "passwordHash": "BuapoGGKIdfGprfMFjj3N9I7Ljg=", 
     "displayName": "Demo User", 
    } 
    ] 
} 

나는 다음과 같은 JS를 실행하면 나는 passwordHash은 내가 기대하고있어 수신 가져온 사용자와 함께 사용해야하는 자격 증명 :
아이디 : [email protected]
암호 : demo

중포 기지 웹 API를 로그인 명령 (INVALID_PASSWORD을 반환) :

firebase.auth().signInWithEmailAndPassword('[email protected]', demo); 

나는 --rounds=80 매개 변수에 대한 확신 아니에요은 할 필요가 이상한 것 같다 sha1을 사용할 때 모두 지정됩니다. 또한 --rounds=0으로 시도했습니다.

답변

1

자바 MessageDigest 등은 SHA-1은 암호 해시를 확인하는 이것을 시도 후, 우리 동네 짱의 인증 전문가 중 하나는 passwordHash = SHA1(plainPassword + salt)

는 그러나, 중포 기지 인증 시스템이 passwordHash = SHA1(salt + plainPassword)을 사용하고있는 것 같습니다 말했다.

그래서 주위를 전환하면 더 나은 결과를 얻을 수 있다고 생각합니다.

+0

네, 그게 정확히 무슨 일 이죠. 'passwordHash = SHA1 (plainPassword + salt)'는 현재 사용중인 apache 시스템의 기본 동작입니다. 파머. – CMikeB1

관련 문제