我们有一个由.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进行通信?
答案 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