在我们的IdentityManager
课程中,我们有以下行:
protectionProvider = new DpapiDataProtectionProvider("OurProduct");
最后一个参数的含义是什么,它是否与在IIS上设置网站的方式有任何关联?
背景
我们已经将具有自定义IdentityManager
类的MVC5站点长期部署到验证环境而没有麻烦,现在我们在尝试重置用户密码时遇到以下问题:
System.Security.Cryptography.CryptographicException: The data protection operation was unsuccessful. This may have been caused by not having the user profile loaded for the current thread's user context, which may be the case when the thread is impersonating.
以下主题描述了一些解决方案: Generating reset password token does not work in Azure Website
所有内容都位于同一台机器上:IIS,Sql Server,Firefox测试浏览器。
不幸的是,我并没有完全掌握这些概念,而且我试图弄清楚测试环境是如何改变的,以便在以前从未发生的情况下触发这个问题?< / p>
答案 0 :(得分:3)
由于我来到这里寻找这个并且没有答案,我决定看看代码。看起来DataProtector.cs使用应用程序名称(以及主要用途和特定用途)来创建SHA 256哈希。
由于散列是one way street,所以在那里放置任何你想要的东西应该是非常安全的。我认为越复杂越好,但应用程序的名称应该没问题。
希望这对任何过分偏执的人都有帮助。