【发布时间】:2017-01-17 13:12:39
【问题描述】:
我正在考虑使用 Azure AD 来处理我的 Web 应用程序的用户帐户。
我已经实现了类似于 Microsoft 的示例代码 here(链接自 here)。
它使用以下身份验证场景(this):
据我了解,一旦用户通过身份验证,OWIN 就会为特定域创建并设置自己的会话 cookie。只要此 cookie 没有过期或损坏,用户将保持登录状态。我们的应用只会在用户注销或再次登录时与身份验证提供程序对话。
所以这就提出了一个问题:如果用户在仍然登录的情况下从 AD 中被停用或删除,会发生什么情况?
假设我有一些敏感信息存储在我的网络应用程序的 只能由授权用户修改的数据库。权限 授权保存在本地数据库中,该数据库与 用户的 OID。
Bob 是我们公司 Web 应用程序的管理员。由于原因 未透露,我们不得不终止他的工作。我们的域名 管理员锁定了他的 AD 帐户,并且 Bob 被护送出 前提。一切都应该没问题。
一切都不好。
心怀不满的 Bob 回到家,看着他的笔记本电脑,他的浏览器是 在我们的网络应用程序上打开。他想:“肯定是锁上了 出去?”。他浏览到网站的管理部分,看到他 仍然可以访问它。以一种微不足道的方式让他自己回到 公司,他进去修改了一些敏感信息。
Bob 仍然经过身份验证(Bob 的凭据仍然可以识别 Bob),但他不应再授权访问该服务。但是,会话 cookie仍然有效。 Bob 仍处于登录状态,并且在此 cookie 过期或结束会话之前仍然可以访问网络应用程序。
我怎样才能阻止这种情况发生? (除了不和鲍勃的妻子睡觉。)
我想到的几个“解决方案”:
为每个 [Authorize] 操作调用 Azure 的图形 API,返回用户是否有效且未被锁定。 Then make the user end their own session。
为检查用户是否被禁用的每个 [Authorize] 操作调用应用程序上的用户元数据表。 (不理想:AD 和本地 DB 之间的差异)
以某种方式使用 BearerAuthentication。 (非常感谢您的帮助,我能找到的唯一示例是 web-api)
什么都不做,处理这种不太可能的情况(不理想)
【问题讨论】:
标签: c# asp.net asp.net-mvc azure authentication