Azure 应用服务 authorization/easy 身份验证冲突 ASP.NET 表单身份验证

Azure App Service authorization/easy auth is conflicting ASP.NET Forms auth

我想启用应用服务身份验证以保护开发环境免受 public 访问。 应用服务身份验证本身工作正常,只允许我们公司 Azure AD 的人,一切都很好。

但是这与网站本身的身份验证冲突,通过Azure AD 身份验证后,网站看到您已经登录。 而且我不明白它到底是如何冲突的,我们正在使用 Forms 身份验证,我已经尝试明确命名 forms auth 应该查找的 cookie,并将其设置为始终使用 cookie 进行身份验证,但它仍然存在冲突。

 <authentication mode="Forms">
      <forms name=".ASPXAUTH" loginUrl="~/sign-in" timeout="2880" requireSSL="true" cookieless="UseCookies" />
 </authentication>

通过 Microsoft 登录后,我看到没有 .ASPXAUTH cookie,只有 AppServiceAuthSession,但 Forms auth 认为我已登录。

我认为您可以通过删除 web.config 中的身份验证设置并使用 OWIN 在网站本身的身份验证之前注入中间件 (CustomMiddleware) 来解决此问题。如果用户通过您的 CustomMiddleware 进行身份验证,您将继续执行常规流程,否则会缩短请求流程。在 CustomMiddleware 中,您可以检查请求 headers、body 等以获取经过身份验证的 cookie 等。我猜您的应用程序中有 MVC 样式的管道。您可以探索 Internet 上的大量资源。下面是一个例子。

https://www.tutorialsteacher.com/core/how-to-add-custom-middleware-aspnet-core