具有Azure身份验证和Azure负载平衡器的asp.net核心

时间:2019-09-17 14:29:34

标签: authentication asp.net-core azure-active-directory openid-connect azure-load-balancer

我正在使用正常的Azure Active Directory身份验证的Asp.Net Core MVC网站上工作。身份验证在我们的正常环境中运作良好,但是现在我们希望将WebApp置于天蓝色的高可用性集和负载平衡器中(WebApp托管在IIS上的Azure VM上)。

如果我仅在服务器上运行,并且负载平衡器将所有请求发送到一个服务器,每个服务器都运行良好,但是如果我同时启动两个服务器,并且负载平衡器将请求发送到这两个服务器,则会出现错误。

HTTP错误404

https://mydomain/AppName/signin-oidc

找不到

那么,为什么我的服务器不能与此正常的OpenId Connect重定向网址一起使用? 我是否应该使用其他Middelware处理Azure AD / OpenId Connect身份验证?

public void ConfigureServices(IServiceCollection services)
{
  ...

  services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
                .AddAzureAD(options => Configuration.Bind("AzureAd", options));
  ...
}

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

Azure负载均衡器在第4层上运行。它不维护基于cookie的会话。 Azure负载平衡器使用基于哈希的路由方法,因此当它将经过身份验证的请求路由到其他服务器时,您将收到404。

您可以考虑使用Application Gateway,它是第7层负载平衡器,您可以在其中启用基于cookie的相似性来维护会话。