身份验证中间件

信息安全 验证 oauth sso 打开ID 山姆
2021-08-18 06:04:04

我们运行一个大型分布式系统,该系统由许多(>10)个基于 Django 的 Web 服务和 Web 应用程序组成,其消费者群约为 10000 名大学生。目前,我们使用我们大学提供的单一单点登录系统(Shibboleth)来处理身份验证。授权/角色是在每个 Web 服务上为每个用户手动配置的。我们当前的架构如下图所示: 在此处输入图像描述

我们希望扩展我们的系统以允许使用 Google、Facebook、LinkedIn 和其他大学登录。似乎我们需要一个负责身份验证和角色管理的中间件。角色经常被创建并且不能被静态定义。中间件还应该执行会话管理(如处理超时、单次注销)。我们描绘了如下图:

建议系统的架构

在这个中间件中我们需要哪些组件?我们的系统管理员正在考虑使用 GluuKeycloak以及 AD 服务。这些解决方案中的任何一个都能满足我们的要求吗?此类系统是否有任何最佳实践或漏洞/配置清单?

4个回答

您所问的似乎是身份和访问管理 (IDAM) 解决方案,它提供来自非大学来源的联合身份验证。

我只处理过专有解决方案(Oracle、CA 等),但 IDAM 解决方案通常由以下元素组成: - 身份验证 - 访问控制 - 用户管理 - 用户存储库

我无法回答您的问题,Gluu 或 Keycloak plus AD 是否满足您的要求,我对它们一无所知。针对每个解决方案定义和映射您的需求应表明它们是否合适。我还假设任何拥有丰富和成熟社区的开源解决方案都会有大量关于强化、配置等方面的指导方针......

如其他答案所述,基本上您需要一个统一的身份管理系统。

免责声明:我工作的公司有提供身份服务的产品。

我不会相信一个人的 StackOverflow 答案来决定哪个系统最适合我的需求。这些系统相当昂贵,人们通常在决定系统之前向多个供应商提出建议。至于清单,每个供应商都会有不同的内存和配置要求。所以答案取决于您选择的供应商。

选择中间件时,请牢记以下要点:

  1. 硬件要求考虑到您将收到的请求数量,您将需要多个专用服务器来处理流量。这将产生额外的硬件成本。一些身份管理器随 OEM 提供,可以帮助您获得更好的交易。
  2. 身份服务的API 文档更改身份服务真的很痛苦。所以你会想要一个最容易集成的。选择一个具有良好 API 文档的文档,以便您的 Web 服务和客户端可以相对轻松地集成。
  3. 登录来源有限并非所有帐户都与所有身份管理服务兼容。此外,通常选择一小部分帐户就足够了。追求更多可能会变得矫枉过正。例如,大多数大学生都有 Google/Facebook 和大学证书。拥有更多的登录名是好的,但不是强制性的。

您正在寻找“API 网关”。

许多 API 网关产品和服务都可用。这个 StackOverflow 答案列出了一些选项:https ://stackoverflow.com/a/11335822/650894

此外,亚马逊提供了自己的 API 网关,看起来有非常灵活的部署选项:https ://aws.amazon.com/api-gateway/

我还遇到了 Axway API 套件,看起来很有希望:https ://www.axway.com/en/enterprise-solutions/api-management/api-management-solutions

抱歉,我无法告诉您哪个选项最适合您的需求,因为我自己也在努力跟上这个领域的步伐。祝你好运!

我们认为最好的方法是追随开源的势头。Keycloak 和 Gluu 都有解决这个问题的方法,还有许多其他可用的解决方案。您确实需要找到与您当前的内部技能/资源基础相匹配的解决方案。

但是,如果您根据 stackoverflow 讨论选择关键供应商,那么您可能会遇到更大的问题要处理 :)