我刚开始使用身份服务器,现在正在快速入门(提前为noob问题道歉!)。
我的查询来自以下事实:在文档站点上的所有快速入门中,客户端机密均以明文形式显示在代码中,甚至包括使用EF和asp.net身份都用于存储配置和用户凭据的示例
我的直接反应是,在代码中存储秘密是不可以的,但是我可以看到缓解的情况取决于我们所讨论的客户端类型,例如如果客户端是托管的mvc webapp,则该代码在理论上可以在托管服务器上得到很好的保护,但是,如果它是桌面客户端,则更容易受到反编译的攻击。</ p>
我已经浏览了所有快速入门并做了一些谷歌搜索,但是我找不到类似于asp.net身份用户所要求的那种明确答案(即将哈希存储在db中)。我还搜索了身份服务器文档,以查找有关此内容的任何指南,但没有找到任何指南(即使Secrets子主题在代码中也包含此秘密)。
因此,我不必担心什么,应该将秘密秘密保留在配置文件中的纯文本代码,还是有更好的内置机制(例如asp.net身份的哈希和存储在db或类似文件中)? / p>
谢谢:)
PS,此问题适用于身份服务器代码以及客户端中的秘密存储
答案 0 :(得分:1)
除非您刚开始使用Identity,否则应将所有“客户机密”存储在数据库中。大多数启动程序都使用Config.cs文件存储所有这些文件,因为它只是本地测试。但是,一旦IS4正常工作,就应该将其移至数据库并存储密码的哈希版本,以确保如果暴露了数据库,它们仍然是安全的。至于身份服务器代码,我将机密存储在appSettings中,您可以根据自己的部署将其保密。