Openid OIDC到SAML选项?

Openid OIDC到SAML选项?,openid,openid-connect,saml,saml-2.0,Openid,Openid Connect,Saml,Saml 2.0,我有两个服务,并且希望允许用户从一个服务登录到另一个服务。然而,作为IdP最有意义的服务只允许OIDC,而我的另一个服务(在这里充当SP)只接受SAML。这两个服务我都没有,因此我无法向这些服务添加对SAML/OIDC的支持。我们也没有通过SAML或类似的方式进行任何自动资源调配,因此不需要担心 我目前的想法是使用某种中介。诸如Ping或OneLogin之类的IdP解决方案是否可以做到这一点还有待观察,但定制web服务器可以做到这一点 客户端请求访问SP SP通过SAML配置中的适当URL重定向

我有两个服务,并且希望允许用户从一个服务登录到另一个服务。然而,作为IdP最有意义的服务只允许OIDC,而我的另一个服务(在这里充当SP)只接受SAML。这两个服务我都没有,因此我无法向这些服务添加对SAML/OIDC的支持。我们也没有通过SAML或类似的方式进行任何自动资源调配,因此不需要担心

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

  • 客户端请求访问SP
  • SP通过SAML配置中的适当URL重定向到中介
  • SAML中介将用户重定向到IdP OIDC登录
  • 用户登录IdP,中间人使用代码检索令牌并验证用户登录
  • 中介基于成功的OIDC身份验证生成SAML断言,并允许用户登录到SP
  • 我确信这会奏效,但它应该吗?有更好的选择吗?除了告诉我的用户这样做可能没有意义之外,还有别的方法吗


    客观上,是什么让这一切正常还是不正常?

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


    一个常用的工具是(或商业支持的版本,RedHat SSO)。Key斗篷允许您使用外部设备,并让用户与之连接,以提供您描述的桥接方式。其他解决方案也可能存在。

    据我所知,没有任何解决方案允许您“动态”更改协议

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

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

    如果您必须使用当前的IDP,则将其与能够提供两种协议的IDP联合

    周围有一个数字,例如Azure AD、Auth0、Okta等