0

当尝试向已经拥有 Bcrypted 密码的 FusionAuth 注册用户时,该密码最初是使用org.springframework.security.crypto.bcrypt.BCrypt(10 轮散列)生成的,当尝试使用 FusionAuth 进行身份验证时,用户将无法使用她的密码。

散列密码如下所示: $2a$10$3sTYd6sHbHIsTO2jBiishOTmcvFS.bJ2X2lbIDO1w2o4MNXXXXXXX

导入代码(在 Kotlin 中)如下所示:

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 的方案“Salted Bcrypt”并启用登录时重新散列。

如果可能,如何注册用户并允许重新使用现有密码?

4

1 回答 1

0

注册 API 不接受散列密码,此 API 将假定password字段中提供的值是纯文本。

为了导入具有现有散列密码的用户,您需要使用 Import API。 https://fusionauth.io/docs/v1/tech/apis/users#import-users

导入用户后,如果启用,re-hash at login密码哈希将在下次登录时更新以匹配系统配置中的配置值。

于 2019-06-26T14:43:00.320 回答