在服务器之间共享DPAPI密钥?

时间:2016-10-03 08:30:13

标签: c# asp.net authentication owin dpapi

我有一个在.NET 4.5.1上运行的ASP.NET WebForms应用程序,并且一直在使用FormsAuthentication API进行基于cookie的身份验证(不使用Identity API;而是“手动”管理用户和会话)。此应用程序在多个服务器上运行,为了使cookie能够在所有服务器上运行,我已将机器密钥设置为web.config文件中所有服务器的相同值。

为了能够与运行在.NET Core 1.0上的MVC应用程序共享身份验证cookie,我将从FormsAuthentication API转移到基于Katana / OWIN的cookie身份验证。虽然我按照https://github.com/blowdart/idunno.CookieSharing中的步骤获得了在单台计算机上运行的身份验证和共享,但我不确定如何在服务器之间共享密钥。所有示例都通过指向包含密钥文件的路径来设置基于cookie的身份验证。如果我能够手动生成密钥并将这些密钥复制到所有服务器,这将起作用。我不知道如何生成这些密钥文件(而docs似乎没有提到如何执行此操作)。如某些示例所示,将密钥文件放在共享文件夹中是不可能的,因为服务器位于完全独立的网络上(这可能在将来发生变化,但现在不会发生变化)。

有没有办法在我的设置下共享多个服务器之间的密钥(即没有共享文件夹的可能性)?

1 个答案:

答案 0 :(得分:1)

大卫,现在看来你是对的,很难开箱即用。 1.1的记录计划可以轻松访问KeyVault和AzureStorage。目前,我认为您可能必须实现KeyManager的一部分(很可能是IXMLRepository),请参阅:docs.asp.net/en/latest/security/data-protection/extensibilit y / ...我感兴趣的是为什么不同域上的机器需要分享钥匙