使用 Identity Server 3 和 AspNet Identity 为项目配置 IUserTokenProvider

Configuring IUserTokenProvider for a project using Identity Server 3 and AspNet Identity

我很难理解在我的身份服务器中为我的 UserManager 配置 IUserTokenProvider 的正确方法。我的目标是能够重置用户的密码。 首先,我知道我需要配置一个提供者,例如:

var provider = new DpapiDataProtectionProvider("MyAppName"); 

但我不确定我应该把这段代码放在哪里。它会在我的 UserManager 构造函数上吗?

这是我的构造函数现在的样子,但似乎不对,否则,我将如何更改验证和创建的目的?

public UserManager(UserStore store)
            : base(store)
        {

            var provider = new DpapiDataProtectionProvider("MyAppName");
            UserTokenProvider = new DataProtectorTokenProvider<User>(provider.Create("EmailConfirmation"));
        }

最后一个问题,该提供商是否会自动处理之前成功使用令牌的情况,以防止进一步的恶意请求?

PS: 我后面用的是EntityFramework.

如果它是 public 属性,你可以做这样的事情(这是很多身份示例处理它的方式)。

        var provider = new DpapiDataProtectionProvider("MyAppName");
        var userManager = new UserManager(userStore)
        {
            UserTokenProvider = new DataProtectorTokenProvider<User>(provider.Create("EmailConfirmation"))
        };

关于最后一个问题,如果您使用的是 EntityFramework(或任何支持 SecurityStamps 的实现),是的,您会受到保护。 What is ASP.NET Identity's IUserSecurityStampStore<TUser> interface? 是了解 SecurityStamps 的良好入门参考。