【问题标题】:How To Config MachineKey In Asp.Net Core In IIS Level如何在 IIS 级别的 Asp.Net Core 中配置 MachineKey
【发布时间】:2019-07-28 11:47:04
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    如果您需要在 ASP.NET 和 ASP.NET Core 之间共享诸如 cookie 之类的东西,您必须以相反的方式工作并将数据保护 API 插入到您的 ASP.NET 应用程序中,以便它们使用相同的系统作为 ASP.NET 核心。微软为此提供了guide

    【讨论】:

      【解决方案2】:

      嗯,这有点取决于你在做什么。如果您的项目使用 Microsoft Identity,则 Identity 默认使用机器密钥作为哈希的一部分。因此,就我而言,我的网站会发送一封电子邮件,要求用户验证他们的电子邮件。该链接包含基本上是加密的密码散列 - 部分 - 使用来自它的服务器的机器密钥。

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

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

      【讨论】:

        猜你喜欢
        • 2018-03-21
        • 2020-03-13
        • 1970-01-01
        • 2011-01-26
        • 2017-07-11
        • 2021-08-13
        • 2016-12-01
        • 1970-01-01
        • 2011-10-02
        相关资源
        最近更新 更多