首页 > 解决方案 > 注销后如何放弃 Azure App Service 会话

问题描述

我有一个简单的 ASP.NET 应用程序,它被部署为 Azure 应用服务。应用程序具有 aad 作为身份验证方法。

身份验证在 Azure 门户中配置为“快速”管理模式 (无身份验证代码,仅门户配置)。身份验证本身工作正常。

问题是从应用程序注销后,服务器会话保持清醒,用户可以使用以前使用的AppServiceAuthSessioncookie 值对应用程序进行身份验证访问。

以下过程显示了如何使用先前保存的AppServiceAuthSession值访问经过身份验证的数据。

  1. 使用 aad 登录应用程序(浏览至https://[myapp].azurewebsites.net-> Azure AD 登录 -> 没问题)
  2. cookie 的存储值:AppServiceAuthSession
  3. 通过浏览注销:https://[myapp].azurewebsites.net/.auth/logout
  4. 使用以前存储的 cookie 值执行 http get 并使用以下样式:curl --cookie "AppServiceAuthSession=[value]" -X GET https://[myapp].azurewebsites.net
  5. 使用以前使用的 cookie 值检索索引页面。

如何防止这种情况,以及如何在注销时正确放弃所有会话数据?

标签: c#azureazure-active-directory

解决方案


对此进行“保护”是没有意义的。

攻击者已经入侵了用户的浏览器并获得了访问存储在其中的 cookie 的权限。根据定义,这个 cookie 是一个秘密,可以证明 HTTP 客户端的身份。如果攻击者已经可以访问它,他们已经可以以他们选择的任意数量的方式使用它,您将无法阻止或区分合法访问服务器的真实用户。

唯一真正的解决方案是使用HTTPS

参考:

https://en.wikipedia.org/wiki/Session_hijacking

https://en.wikipedia.org/wiki/HTTPS


推荐阅读