OIDC 到 SAML 选项?

问题描述 投票:0回答:3

我有两项服务,并且希望允许用户从一项服务登录另一项服务。然而,作为 IdP 最有意义的服务仅允许 OIDC,而我的其他服务(此处充当 SP)仅接受 SAML。我不拥有这两项服务,因此无法向这些服务添加对 SAML/OIDC 的支持。我们也没有通过 SAML 或类似方式进行任何自动配置,因此这不是问题。

我目前的想法是使用某种中介。 Ping 或 OneLogin 等某种 IdP 解决方案是否可以做到这一点还有待观察,但自定义 Web 服务器可以。

  1. 客户端请求访问SP
  2. SP 通过 SAML 配置中的适当 URL 重定向到中介
  3. SAML 中介将用户重定向到 IdP OIDC 登录
  4. 用户登录IdP,中介使用代码检索令牌并验证用户登录
  5. 中介根据成功的 OIDC 身份验证生成 SAML 断言并允许用户登录 SP

我已经说服自己这会起作用,但是应该吗?有更好的选择吗?除了告诉我的用户这样做可能没有意义,还有其他方法吗?

是什么让这客观上可以或不可以?

openid openid-connect saml saml-2.0
3个回答
1
投票

您可以使用 FoxIDs - SAML 2.0 / OpenID Connect 桥从 SAML 2.0 SP 桥接到 OpenID Connect (OIDC) OP,或者反过来从 OpenID Connect RP 桥接到 SAML 2.0 IdP。


0
投票

理想情况下,人们喜欢通过在任何地方添加额外的移动部件来避免复杂性,特别是在像身份验证这样敏感的事情上。 但大多数软件开发的现实是,您必须将各种预先存在的组件集成到新的解决方案中,这通常包括合并现有的身份提供商。 (迁移大量身份和凭据会带来其自身的复杂性和风险!)因此,您肯定会在现实世界的系统中看到这些“身份验证适配器”模式。 并且有经过充分测试的工具,因此您不必冒险自行开发。

一种常用的工具是Keycloak(或商业支持的版本,RedHat SSO)。 Keycloak 允许您使用外部 OIDC IdPs 并让用户与 SAML 客户端 连接以提供您所描述的那种桥接。 其他解决方案也可能存在。


0
投票

据我所知,没有任何解决方案可以让您“即时”更改协议。

您必须自己动手,很快就会陷入困境,例如令牌签名、将 OIDC 属性映射到 SAML 属性(不存在一对一关系)、注销等。

最简单的方法是使用允许 OIDC 和 SAML 的外部 IDP,这将为您提供跨应用程序的 SSO。

如果您必须使用当前的 IDP,请将其与可以提供两种协议的 IDP 联合起来。

周围有很多,例如Azure AD、Auth0、Okta 等

© www.soinside.com 2019 - 2024. All rights reserved.