将.Net Core 2 API添加到使用machineKey加密的.Net 4.6 API Webfarm中

时间:2018-11-20 17:30:05

标签: asp.net-web-api asp.net-core asp.net-web-api2 microservices asp.net-core-webapi

我们有一个由.Net 4.6.1 Web API构成的微服务体系结构,它们都在web.config中使用相同的machineKey,这是它们进行通信所必需的。它们都已部署到内部公司服务器中。我们想开始将.Net Core 2用于新的Web API,但是.Net Core Web API使用新的Data Protection API,该数据保护API不再使用machineKey,而是使用共享密钥文件。所以我的问题是:

我们如何创建新的.Net Core 2 Web API并将其添加到我们现有的.Net 4.6.1微服务体系结构中,并使它们使用已使用的machineKey进行通信?

1 个答案:

答案 0 :(得分:0)

经过大量研究,我得出的结论是无法实现,因为.Net Core 2 API不支持machineKey加密。因此,我用.Net核心数据保护API改造了.Net 4.6 API,并将它们配置为使用相同的密钥集。然后,在我们的.Net Core API中,我将数据保护API配置为使用与.Net 4.6 API相同的密钥集。然后,我为.Net Core 2.1 API创建了身份验证中间件,该中间件对访问令牌进行解密并创建了声明。

这里有一篇不错的文章,关于用Data Protection API替换ASP.NET中的machineKey: https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/compatibility/replacing-machinekey?view=aspnetcore-2.1

关于创建ASP.NET Core 2中间件,这是一个很好的线索: ASP.NET Core 2.0 authentication middleware