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

时间:2017-08-13 15:31:32

标签: asp.net-identity identityserver3

我正在努力了解在我的身份服务器中为IUserTokenProvider配置UserManager的正确方法。我的目标是能够重置用户的密码。 首先,我了解我需要配置提供程序,例如:

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。

1 个答案:

答案 0 :(得分:0)

如果它是公共财产,你可以做这样的事情(这是很多身份例子处理它的方式)。

        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的良好开端参考。