跨多个应用服务计划覆盖 Microsoft Azure 应用服务上的 MachineKey

Phi*_*hil 7 asp.net-mvc azure machinekey

我正在尝试在 ASP.Net MVC 应用程序的 Web.Config 中设置机器密钥,但听起来Azure 会自动为每个 Web 应用程序提供唯一的机器密钥并覆盖我的 Web.Config 中的内容。

我想这样做的原因是因为我有一个应用服务女巫用作身份验证应用程序。那是用户登录的地方。而且我还有很多其他应用程序将使用第一个应用程序提供的令牌。这样做将在一个独特的地方对用户进行身份验证,并且用户将能够浏览门户中的某些模块,只需进行一次身份验证。它在 localhost 或托管在 IIS 中运行良好,但在 Azure 托管应用服务上,即使我在 Application_Start 时重置了机器密钥配置部分,它似乎也无法正确读取机器密钥或其他内容。

我尝试了此处描述的解决方案,但正如@gorillapower 所说

似乎这对我们不起作用。我们正在使用 .NET 4.6.1 并使用 OWIN 启动与 app.UseCookieAuthentication() 并使用 Redis 缓存会话提供程序。我实现了上面的,但用户在插槽交换后一直被注销。有任何想法吗?

似乎当您在应用服务计划 (ASP) 的多个实例上运行 ASP.NET 应用程序时,您无需担心 machineKeys,因为应用服务平台将在您的所有实例中使用相同的密钥,因此不需要对您的应用程序进行任何更改。

但就我而言,我们的应用程序都在不同的应用程序服务计划中。所以这个解决方案不适用。

关于这个问题的任何线索?谢谢

Ani*_*nha 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" />
Run Code Online (Sandbox Code Playgroud)