使用 SAML 和身份提供者的微服务身份验证

Posted

技术标签:

【中文标题】使用 SAML 和身份提供者的微服务身份验证【英文标题】:micro services authentication using SAML and Identity Provider 【发布时间】:2016-10-24 07:24:09 【问题描述】:

我们正在为我们的领域开发微服务。

我们需要使用 SAML 保护微服务。

我通读了 SAML 文档,发现有一个身份提供者,我们已经向其注册了我们的应用程序 (SP),而且我们应该连接到 IdP 以进行身份​​验证。我知道我们需要在他们之间建立信任或联盟。

我尝试使用提供的示例应用程序使用 Spring Security SAML 扩展和 SSOCircle.com 作为 IdP 进行身份验证。我能够成功地进行相应的身份验证。

我的问题是,在微服务架构中,我们有多个服务。由于它不是一个整体,我们不能只将一个服务作为 SP 添加到 IdP。

这意味着我所说的每个微服务,员工、部门、销售等也应该作为单独的 SP 应用程序添加到 IdP 中。

我不确定这是否有意义或是否真的可行。

如果有人从事过类似的架构/开发,请提供您对从身份验证角度处理微服务安全性的最佳方法的想法。

谢谢, 技术员

【问题讨论】:

【参考方案1】:

两种方法:

    如您所说,将每个微服务配置为 SP,每个 SP 与 IdP 对话以进行 SAML 身份验证。 如果每个微服务的用户、组和角色集与其他微服务不同,这是合适的。 可能有多个 SP,需要管理员维护。 将所有微服务整合并配置到您域中的单个 SP(可能使用反向代理 Web 服务器或访问管理器),并且该单个 SP 与 IdP 对话以进行 SAML 身份验证。 如果所有微服务都具有相同的用户、组和角色集,这是合适的。 管理员可能只需要维护一个 SP。

【讨论】:

感谢您的回复。是的,所有微服务都有相同的用户集,但可能有不同的组和角色。我也觉得拥有一个单一的 SP 应该是前进的方向。但是,我不确定我们如何使用 IdP 为与域相关的所有服务配置单个 SP。我正在使用 public IdP ssocircle.com 通过上传来添加服务元数据,该元数据在服务启动时生成。您能否告诉我如何将服务分组到单个域中并将其添加到 IdP。 简单的解决方案是,使用反向代理 Web 服务器(如 Apache 反向代理或 nginx)。 (1)。在反向代理的配置或策略文件中添加所有微服务端点。 (2)。集成反向代理(使用 SAML 模块)和您的 SAML-SP 服务器进行通话。 (3)。现在所有服务都受到保护,并将通过 IdP 的 SAML 身份验证。有关如何实现上述方法,请进一步参考反向代理 Web 服务器(如 Apache 反向代理或 Nginx)。

以上是关于使用 SAML 和身份提供者的微服务身份验证的主要内容,如果未能解决你的问题,请参考以下文章

使用 SAML 2.0 作为 SSO 的外部身份提供者的身份服务器 4

使用 Spring Security 在一个应用程序中结合数据库和 SAML 身份验证

要求使用相同的 IDP 重新进行身份验证 - Spring SAML

如何创建 SAMLAuthenticationToken 并将其发送到 SAML 身份验证提供程序

CVE-2022-23131——绕过 SAML SSO 身份验证

服务提供者之间的 SAML 2.0 身份验证断言(C#、.net、MVC4、组件空间)