使用电子邮件确认码重置 Wso2 密码在使用一次后失效
Posted
技术标签:
【中文标题】使用电子邮件确认码重置 Wso2 密码在使用一次后失效【英文标题】:Wso2 password reset with email confirmation code invalidates after one use 【发布时间】:2015-06-05 04:21:16 【问题描述】:WSO2 有一个通过电子邮件更新密码的 6 个步骤。
getCaptcha() - Generates a captcha.
verifyUser() - Validates the captcha answer and username and returns a new key.
sendRecoveryNotification() - Send an email notification with a confirmation code to the user. Need to provide the key from previous call.
getCaptcha() - Generates a captcha when the user clicks on the URL.
verifyConfirmationCode() - Validates the captcha answer and confirmation code. This returns a key.
updatePassword() - Updates the password in the system. Need to provide the key from previous call, new password and returns the status of the update, true or false.
第 3 步将确认代码发送到电子邮件地址,然后在第 5 步中提供,验证用户是否正确。
当有人输入他们已经使用过的密码时,就会出现问题。如果输入的密码在过去使用过,数据库将拒绝该密码,从而让 WSO2 返回密码更新错误。当一个人然后去输入一个新密码时,确认码已经失效。这意味着用户必须重新开始整个过程才能获得新代码来重置密码。
是否有防止输入错误密码时确认码自行失效的设置?
他们的网站声明:
同样对于每次通信,生成的确认码不会被服务重用。这使得服务安全并且重复尝试访问相同服务失败。因此,对于基于电子邮件的恢复,调用应用程序必须执行的调用顺序如下:
这是否意味着密码更新会话中的一个用户只有一次尝试更改密码?
【问题讨论】:
密码验证在哪里进行?是 WSO2 Identity Server 插入的底层 ldap\AD 吗? 是的。底层 LDAP 将采用 wso2 传入的密码,如果密码已在 LDAP 中使用,则不会接受。然后 WSO2 将返回更新密码的错误。如果密码更新失败,则确认码已被使用,不能再次使用。这意味着用户必须收到一封新电子邮件才能再次完成该过程。 【参考方案1】:AFAIK 这是当前版本 5.0.0 中的限制。
创建了一个 JIRA [1] 来提及此要求。
[1]https://wso2.org/jira/browse/IDENTITY-3175
HTH, 达雷
【讨论】:
以上是关于使用电子邮件确认码重置 Wso2 密码在使用一次后失效的主要内容,如果未能解决你的问题,请参考以下文章
我们将如何发送不同的电子邮件模板以重置密码并确认在 AWS cognito 中注册
ASP.NET Core Identity - 使令牌(电子邮件确认、密码重置等)在不同服务器上有效?