上下文: 我们有一个无法控制的OIDC IdP,但我们需要支持来自服务提供商(SP)的SAML SAML请求。
想法: 构建位于SP和OIDC身份提供程序之间的代理(应用程序)。来自SP的请求被发送到代理应用程序(充当SP的SAML IdP),并且代理应用程序将请求转换为OIDC请求,并将其转发给OIDC提供程序。 OIDC提供程序的结果返回到代理应用程序,该应用程序将其转换为SAML响应并将其转发给SP。
问题:
我对SAML IdP(执行明智)的了解非常有限。对我来说,这种方法似乎很骇人听闻:)感觉有很多事情我缺少考虑。因此,需要有关我在哪里做错事情的帮助和指导。我想问的几件事是:
我们将不胜感激任何帮助。
谢谢!
答案 0 :(得分:2)
随着越来越多的服务迁移到OpenIdConnect,例如,这已经成为一个非常普遍的问题。与Office365 OIDC身份验证并行运行的SAML工作流。您的方法很合理。
正如您所说,IdP应该将OIDC JWT声明转换为SAML属性以供SP使用,并且在SAML和OIDC之间进行桥接的方法有多种。
如果您想使用付费路线,则公开有Shibboleth/ADFS bridge和cloud based IdP。
或者您可以安装'standard' IdP并开发自己的网桥。基本上,它将身份验证委托给OIDC提供者,然后将声明转换为SAML,也许可以通过LDAP查找功能进行增强以获取更多属性。
或者您可以使用“标准” IdP并在其前面安装apache和mod_auth_openidc来管理OIDC身份验证和声明处理。
关于安全性,只要您可以相信OIDC的要求,就可以了。 IdP / SP的SAML元数据已经处理了SAML信任。身份验证将由OIDC处理,并且JWT声明将发送到您的SAML IdP,因此,只要您保护IdP和OIDC之间的路由,它就应该与SAML路由一样安全。
对于以Office365作为OIDC提供程序的情况,IdP将需要注册为租户应用程序,并将声明发送到其ReplyUrl。