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

我们希望扩展我们的系统以允许使用 Google、Facebook、LinkedIn 和其他大学登录。似乎我们需要一个负责身份验证和角色管理的中间件。角色经常被创建并且不能被静态定义。中间件还应该执行会话管理(如处理超时、单次注销)。我们描绘了如下图:
在这个中间件中我们需要哪些组件?我们的系统管理员正在考虑使用 Gluu或Keycloak以及 AD 服务。这些解决方案中的任何一个都能满足我们的要求吗?此类系统是否有任何最佳实践或漏洞/配置清单?
