在Microsoft Azure应用服务中跨多个应用服务计划覆盖MachineKey

9
我正在尝试在ASP.Net MVC应用程序的Web.Config中设置机器密钥,但似乎Azure会自动为每个Web应用程序提供独特的机器密钥并覆盖我的Web.Config中的内容。我之所以想这么做,是因为我有一个用作身份验证应用程序的应用服务。那里是用户登录的地方。我还有很多其他将使用第一个应用程序提供的令牌的应用程序。这样做将在一个唯一的位置对用户进行身份验证,并且用户将能够通过门户中的某些模块进行身份验证,只需进行一次验证即可。在本地主机或IIS上托管时,它的表现非常好,但在Azure托管的应用服务中,即使我在Application_Start时重置了机器密钥配置部分,似乎也无法正确读取机器密钥。我尝试了这里描述的解决方案,但如@gorillapower所说。
似乎这对我们没有作用。我们使用.NET 4.6.1,并使用OWIN启动,使用Redis缓存会话提供程序。我实施了上述方法,但用户在插槽交换后仍然被注销。有什么想法吗?
此外,当您在ASP.NET应用程序上运行ASP的多个实例时,您不需要担心machineKeys,因为App Service平台将在所有实例上使用相同的machineKey,因此不需要对应用程序进行任何更改。
但在我的情况下,我们的应用程序都在不同的App Service计划中。所以这个解决方案不适用。
有关此问题的任何线索?谢谢
1个回答

0

生成机器密钥并添加到web.config文件中

无论是在IIS还是Azure Web App服务中,都适用于Web Farm /负载均衡器。 注意:仅当您使用IAppBuilder-> UseCookieAuthentication-> CookieAuthenticationOptions时才有效。

<system.web>
    <authentication mode="None" />
    <machineKey validation="HMACSHA256" decryption="AES" validationKey="D6883865C0490AFA4907A046E838DD2C7B13B636694B552630C13770701B944A" decryptionKey="2C3C48562E6FE018E71B69BDB27D06048A573C094A962AA9A1547C3D874C63B0" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接