【问题标题】:ASP.NET Identity Core: invalid token for password reset on web farmASP.NET Identity Core:Web 场密码重置的无效令牌
【发布时间】:2021-01-23 17:12:52
【问题描述】:

所以,我一直在阅读文档,并且正在尝试将我的网站建立在网络农场上。我搜索了很多文章,似乎将密钥环设置为公共网络路径应该是使数据保护工作所需的全部内容。就我而言,我将其持久化到 Azure。

现在,身份验证工作正常,但是当用户尝试重置其密码时(当链接在一台机器上生成并在另一台机器上验证时)我总是收到 Invalid Token 错误。

编辑:添加了用于生成链接和验证令牌的代码。

顺便说一句,这是用于生成带有令牌的重置链接的代码:

var code = await _userManager.GeneratePasswordResetTokenAsync(user);
await _emailSender.SendPasswordResetAsync(user,
                                     User.IsAuthenticated(),
                                     Url.Link("default",
                                     new {
                                        Controller = "Account", 
                                        Action = "ResetPasswordEmail", 
                                        token = code, 
                                        email = user.Email
                                     }),                                                          
                                    _dbContext.Database.GetDbConnection(),
                                    CancellationToken.None);
        

这是它的验证方式:

var validToken = await _userManager.VerifyUserTokenAsync(user,
                                                         "Default",
                                                         "ResetPassword",
                                                         token);

有什么想法吗?

谢谢。

【问题讨论】:

  • 你是如何生成令牌的?您是否可能错误地对其进行 URL 编码/解码? 当链接在一台机器上生成并在另一台机器上验证时 - 所以当您在同一台机器上生成并验证它时它可以工作?
  • 是的,当它发送到同一台机器时,验证按预期工作......当我回到我的机器时,我会添加一些代码
  • 你好。我添加了用于生成和检查令牌的代码用户。 _userManager 引用了一个有效的 UserManager 实例。

标签: asp.net-core data-protection web-farm


【解决方案1】:

好的,一如既往,问题出在椅子和键盘之间……

问题在于密钥环被设置为在 #if RELEASE 条件中使用 azure,而该条件未在发布管道上设置...

底线:共享密钥环是让一切正常运行所需要的一切......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-03
    • 2015-04-28
    • 2020-12-15
    • 2015-05-29
    • 2017-08-12
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    相关资源
    最近更新 更多