如何在IIS级别的Asp.Net Core中配置MachineKey

时间:2019-03-06 17:55:25

标签: c# iis asp.net-core asp.net-core-mvc

我有两个服务器,并且在服务器之间的通信中,我检查了 IIS 级别的机器密钥。现在,我在 net core 中有了一个新项目,我想检查机器密钥,例如Asp.net项目。我正在搜索但找不到解决方法

2 个答案:

答案 0 :(得分:1)

ASP.NET Core不使用Web.config,即使使用Web.config,它也不使用计算机密钥。密码学是通过Data Protection API处理的,它以完全不同的方式存储和生成密钥。

如果需要在ASP.NET和ASP.NET Core之间共享Cookie之类的内容,则必须以相反的方式进行工作,并将Data Protection API插入ASP.NET应用程序中,以便它们使用相同的系统作为ASP.NET Core。微软为此提供了guide

答案 1 :(得分:1)

嗯,这完全取决于您在做什么。如果您的项目使用Microsoft身份,则身份默认情况下将机器密钥用作哈希的一部分。因此,以我为例,我的网站发送了一封电子邮件,要求用户验证其电子邮件。该链接包括基本上是密码散列的密码-部分是用源于它的服务器中的机器密钥加密的。

因此,如果用户单击链接,然后在服务器场中的其他服务器上结束,则除非在负载均衡器后面的各个服务器上将计算机密钥设置为相同,否则验证检查将失败。

因此,在这一点上,我还没有找到在发布到IIS时设置机器密钥的任何好方法。从我的ASP.NET核心项目发布时,将自动生成web.config。此时,我发现的唯一解决方案是在发布项目后手动打开web.config,并在部署到服务器场中的服务器之前插入计算机密钥部分。