asp.net-mvc - Azure 应用服务授权/简易身份验证与 ASP.NET 表单例份验证冲突

标签 asp.net-mvc azure azure-web-app-service forms-authentication

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

但这与网站本身的身份验证相冲突,通过 Azure AD 进行身份验证后,网站会看到您已经登录。 我不明白它到底是如何最终发生冲突的,我们正在使用表单例份验证,我尝试显式命名表单例份验证应该查找的 cookie,并将其设置为始终使用 cookie 进行身份验证,但它仍然存在冲突。/p>

 <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 在网站本身的身份验证之前注入(inject)中间件(CustomMiddleware)来解决此问题。如果用户通过您的 CustomMiddleware 进行身份验证,您将继续常规流程,否则会短路请求流程。在 CustomMiddleware 中,您可以检查请求 header 、正文等以验证 cookie 等。我猜您的应用程序中有 MVC 风格的管道。互联网上有许多资源可供您探索。下面是一个示例。

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

关于asp.net-mvc - Azure 应用服务授权/简易身份验证与 ASP.NET 表单例份验证冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61400437/

相关文章:

c# - 从 MVC 应用程序中的预编译类序列化 JSON 对象

asp.net-mvc - 如何覆盖 HTML 帮助器方法用于模型属性的字符串表示形式?

azure - 在 VSTS 上的 Azure CLI 任务中设置输出变量

Azure Web App 返回错误的 SSL 证书

reactjs - Azure Active Directory - 如何为我在租户下注册的应用程序提供 http redirectUri

c# - 具有继承实体的 MVC 5 脚手架代码生成导致 System.Core 已导入

azure - 如何在 Azure VM 上同时运行 2 个 VM 自定义脚本扩展

azure - 如何在flutter(dart)中实现Azure Adb2c(自定义策略)本地化?

Azure 应用程序网关锁定了应用程序服务的路由

c# - 如何设置 UserTokenProvider token 过期