我需要一个可以在多台客户机上运行的UserTokenProvider

时间:2015-02-02 14:10:34

标签: c# authentication asp.net-identity-2

我正在寻找一个网站的ASP.NET身份,但用户管理面板不会成为网站的一部分,而是集成到一个单独的桌面应用程序中。

使用ASP.NET Identity的Boilerplate代码似乎涉及:

    var dataProtectionProvider = options.DataProtectionProvider;
    if (dataProtectionProvider != null)
    {
        manager.UserTokenProvider = 
            new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity"));
    }

其中options从OWIN框架传入,manager是UserManager。关键似乎是生成IDataProtector的实现,它实现了某种可逆加密。

此处的默认实现依赖于机器密钥,该密钥在所有计算机上都不相同。我强烈建议不要进行自签名证书并在所有客户端计算机中获得它。

这是为了什么?据推测,它与单向散列密码无关。其他googled引用似乎表明它与重置密码有关,但我找不到任何关于究竟加密的详细参考。

如果我找不到关于它究竟要保护的文档的文档,那么很难弄清楚这个接口的适当实现是什么。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

IDataProtector正在实施加密,生成令牌以进行密码重置和电子邮件确认。默认实现不依赖于MachineKey。

你是对的,这与密码散列无关。这会生成令牌,令牌中包含一些数据,令牌经过加密和签名以避免篡改。一旦令牌返回服务器,它就会被解密并签名,如果一切正确,用户可以重置密码或确认电子邮件。

我不确定您将如何在桌面应用上使用它以及您正在谈论的机器是什么。这些服务器还是台式机?