azure-active-directory - 多租户应用程序中的 SSO:恶意管理员怎么办?
问题描述
我们有一个多租户 Web 应用程序,并且正忙于实施 SSO(OpenID with Azure)并且正在考虑可能的安全问题。
在我们的应用程序中,用户可能有权访问多个租户。定期身份验证集中完成,然后系统检查您可以访问哪些租户,如果超过一个,您可以选择要访问的租户。我们正在考虑功能,一旦您登录,您可以在租户之间切换而无需再次登录。
(理论)问题是这样的:
- 租户 A 的用户 Bob 可以定期访问其数据
- 恶意租户 B 设置 SSO,他们可以在其中完全控制用户管理
- 恶意租户 B 知道 Bob 的电子邮件地址,并将他添加到他们的 SSO 目录,设置他们选择的密码
- 恶意租户 B 以 Bob 身份登录我们的系统,然后切换到租户 A
这是一个普遍的威胁吗?已知的身份提供商(微软、Facebook、谷歌)是否总是强制用户自己设置密码,或要求电子邮件验证?或者我们的情况是否独特,通常多租户应用程序不允许用户切换租户,无需重新验证?
谢谢!
解决方案
解决方案是关于信任和范围。身份提供者 (IDP) 提供的信息应仅在受限范围内受信任。因此,如果租户 A 具有 SSO 设置,则其 IDP 提供的信息(声明)应仅对其租户有效。
因此,某些 IDP 提供的电子邮件地址只能对该 IDP 有效。您不应假设某些 IDP 提供的电子邮件地址会以任何身份进行验证。
推荐阅读
- flutter - 迁移到 Dart 空安全后出现“无法无条件调用运算符,因为接收器可以为空”错误
- flutter - 堆叠架构 - 用户持久性
- sockets - python socket.io 如何发射到特定的客户端?
- r - 在使用分段回归之前我必须分析变化点吗?
- python - 如何从python中的api响应中提取特定字符串?
- javascript - Javascript计算日期中的年份差异错误?
- c# - 使用css Grid动态对齐同一行中的项目
- html - 字体样式和字体大小在发送到 Gmail 的 HTML 电子邮件中不起作用
- php - 我想使用 Laravel 6 创建一个私有目录
- odata - 重命名通过引用的 CDS 视图生成的 OData 服务的实体?