Невозможно повторно использовать существующие пароли BCrypted при регистрации / импорте устаревших пользователей - PullRequest
0 голосов
/ 26 июня 2019

При попытке зарегистрировать пользователей в FusionAuth, у которых уже есть пароль Bcrypted, который был изначально сгенерирован с помощью org.springframework.security.crypto.bcrypt.BCrypt (с 10 раундами хеширования), пользователь больше не может использовать свой пароль при попытке аутентификации с помощью FusionAuth.

Хешированные пароли выглядят так: $2a$10$3sTYd6sHbHIsTO2jBiishOTmcvFS.bJ2X2lbIDO1w2o4MNXXXXXXX

Код импорта (в Котлине) выглядит следующим образом:

val response = client.register(null, RegistrationRequest(User().apply {
                username = user.username
                email = user.email
                firstName = user.firstname
                lastName = user.lastname
                active = user.isActive
                encryptionScheme = "bcrypt"
                password = user.password // generated with BCrypt(10) 
                passwordChangeRequired = false
                data.putAll(mapOf(
                        "mainMandant" to user.mainMandant?.mandantName,
                        "custodianMandants" to user.custodianMandants.joinToString { it.mandantName },
                        "technicalUser" to user.isTechnicalUser
                ))
            }, UserRegistration().apply {
                applicationId = myAppId
                roles = extractUserRoles(user).toSortedSet()
                preferredLanguages.add(Locale.GERMAN)
                username = user.username
            }, false, true))

В системных настройках FusionAuth «Параметры криптографического хеширования» настроено для использования схемы «Соленый шифр» с фактором 10 и повторного хеширования при включенном входе в систему.

Как зарегистрировать пользователя и разрешить повторное использование существующего пароля, если это возможно?

1 Ответ

0 голосов
/ 26 июня 2019

API регистрации не принимает хэшированный пароль, этот API будет предполагать, что значение, указанное в поле password, представляет собой простой текст.

Чтобы импортировать пользователя с существующим хэшированным паролем, вам потребуетсянужно использовать API импорта.https://fusionauth.io/docs/v1/tech/apis/users#import-users

После импорта пользователя, если вы включите re-hash at login, хеш пароля будет обновлен в соответствии с настроенными значениями в конфигурации системы при следующем входе в систему.

...