使用电子邮件确认码重置 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 密码在使用一次后失效的主要内容,如果未能解决你的问题,请参考以下文章

重置 ASP.NET 密码 - 安全问题?

我们将如何发送不同的电子邮件模板以重置密码并确认在 AWS cognito 中注册

ASP.NET Core Identity - 使令牌(电子邮件确认、密码重置等)在不同服务器上有效?

Parse Server - 如何翻译邮件确认页面和密码重置页面

使用设计重置密码问题

如何在 Node.js 中正确实现“忘记/重置密码”功能? (使用一次性令牌)