User Import from LDAP Database Getting Incorrect Username/Password

Overview

I am doing migration tests from an LDAP database to Auth0 and after I import users I try to test the account in my database it gives me the error that the password is incorrect. Here is an example of a test user profile:

{
  "family_name": "John",
  "given_name": "Doe",
  "name": "John Doe",
  "email_verified": true,
  "email": "john@example.com",
  "custom_password_hash": {
    "algorithm": "ldap",
    "hash": {
      "encoding":"utf8",
      "value": "{SSHA512}fTX2qFJr2HonObKe3Upycji16KHQCx9E1AC3rkhKN6pXC7F29dWU2x3Z9OALxrzqWEfB+R229k5boY5cKjt9YDTnP4uIzLaQ"
    }
  }
}
Applies To
  • User Import
  • LDAP
  • Password Hash
Cause
This example is using a custom hash starting with {SSHA512}. Given that this is a Seeded SHA, you would also need the salt to correctly hash the password.
Solution
The following script outputs the correct SHA512 password hash. You can use it to test the passwords and debug:
const crypto = require('crypto')

const password = '12345'
const digestMethod = 'sha512'

const run = async () => {
  const rawHash = crypto.createHash(digestMethod)
    .update(Buffer.from(password))
    .digest()
  const hash = rawHash.toString('base64') 
  console.log(`{SHA512}${hash}`)
}

run()
Result: "{SHA512}NieQminDE4Ggcewn98nKl3Jhgq7Smn3dLlQ1MyLPswq7njpt8qwsIP4jQ2MR1nhWTQyNMFkwV19g4tPQSBhNeQ=="

If you have the salt, this is the updated script to obtain an SSHA hash:
const crypto = require('crypto')

const password = '12345'
const salt = 'keyboardcat'
const digestMethod = 'sha512'

const run = async () => {
  const saltBuf = Buffer.from(salt)
  const rawHash = crypto.createHash(digestMethod)
    .update(Buffer.from(password))
    .update(saltBuf)
    .digest()
  const hash = Buffer.concat([rawHash, saltBuf]).toString('base64')
  console.log(`{SSHA512}${hash}`)
}

run()
Result: "{SSHA512}/QjFCr4JlH6s9UZ7ptgtbdhBVDq2hv9bcS5yxbckt4XHcd8q2Fbi8EN/fOXRDgT9EtWt91RfGoz/2uxUe/ZEKGtleWJvYXJkY2F0"
 

Recommended content

No recommended content found...