MachineKey Azure SDK 1.5 / 1.6

时间:2011-12-31 08:22:09

标签: azure wcf-web-api azure-web-roles

我在Azure上使用WCF Web API使用自定义Api Token实现。这使用FormsAuthentication.Decrypt来获取FormsAuthenticationTicket。为了确保decrpyt进程在多个实例中工作,我在web.config中提供了一个MachineKey。 但是,我注意到MachineKey似乎没有在Azure上工作,因为它看起来像Azure使用随机机器密钥并覆盖我在web.config中指定的那个。我正在使用最新的Azure SDK 1.5(或1.6?)

我很清楚Azure SDK 1.3的这个问题,我相信这在1.4中得到了纠正。此问题是否有可能在Azure SDK1.5 / 1.6上重新出现?

5 个答案:

答案 0 :(得分:0)

Windows Azure已在部署中跨同一角色同步计算机密钥。因此,您应该可以完全忽略web.config中的MachineKey设置,只需让Windows Azure为您处理(Web服务器场景得到很好的支持)。 Windows Azure开箱即可支持您的方案,无需修改(只需调用Decrypt)。

您可能正在讨论的问题是1.3问题,其中web.config文件被直接修改以同步机器密钥。当文件是只读(即TFS源控制)并导致部署失败时,此操作失败。这是在不久前修复的。

答案 1 :(得分:0)

我想我终于找到了解决方案。这与Azure或MachineKeys无关,但更多地与应用程序的测试方式有关。存储在我的电话应用程序上的加密密钥在不同的Web服务器上加密(但是,使用的机器密钥是相同的)。我刚刚卸载并重新安装了我的应用程序,从而迫使服务器生成一个新密钥。

似乎在另一台服务器上解密此密钥会导致问题。如果这将导致将来出现问题,我有点担心。不应该使用相同的机器密钥确保加密/解密在框中工作吗?

无论如何,对于给您带来的不便,我深表歉意。

答案 2 :(得分:0)

我们似乎也有同样的问题。我们在web.config文件中设置了machinekey set。事情很好,直到几天前Decrypt开始返回null。 decryptionkey和validationkey在所有机器上都是相同的。不确定是什么问题。

编辑 - Azure v1.6似乎尊重我们在配置文件中设置的机器密钥。我们想出了如何解决我们的问题 - 也许这会对你有所帮助 - 我们发现cookie上的解密对我们的Windows 7 64位开发机器不起作用。然后我们检查了挂起的更新,并且有一些与安全性相关的.NET更新。我们运行了更新,然后开始重新开始工作了。

答案 3 :(得分:0)

好的,所以我遇到了如上所述的3服务器NLB组中的问题。

看起来Windows自动更新已在三台服务器中的两台上安装了KB2656352,KB2656358和KB2657424。

我认为这是因为有些服务器正在运行补丁而有些服务器没有运行。我想已修补的机器不喜欢解码由非修补机器编码的内容(和/或反之亦然)。

无论如何,我已经在剩余的机器上安装了所有三个补丁并将其重新放回NLB组。似乎一切正常。

答案 4 :(得分:0)

我遇到了同样的问题,即在最近的Microsoft .Net 4.0安全性升级KB2656351之后,我的FormsAuthentication票证未在子域中进行验证。

我的FormsAuth票证是从我的专用服务器生成的,并在Windows Azure上的子域上读取。

为了让所有子域解密票证,我确保所有专用服务器都通过Windows Update修补了最新的.Net更新。然后我将Azure项目升级到1.6版,并在部署后选择了最新的Azure OS。这似乎可以解决问题。

以下是一些关于此问题的文章:

http://weblogs.asp.net/scottgu/archive/2011/12/28/asp-net-security-update-shipping-thursday-dec-29th.aspx

http://technet.microsoft.com/en-us/security/bulletin/ms11-100.mspx

欢呼声

弗朗西斯