目前,我有一个依赖于SAML身份提供者的SP。它还支持用户直接登录SP。用户可以直接登录,也可以从SP开始,然后重定向到SAML身份提供者进行身份验证。
我正计划将SP转换为使用OIDC和IdSrv4,并且完全没有SP管理的凭据。我仍然希望支持SAML提供程序,但最好是通过新的OIDC IdP。将这个新的OIDC IdP添加到SAML流中的正确方法是什么?我:
问题1:
让SP和SAML进行通信,然后将SAML响应传递给IdP进行翻译(这似乎不正确并且容易滥用)
答案:
OIDC和SAML是两个不同的身份联合协议,允许第三方身份提供者为依赖方的Web应用程序提供身份验证服务。
SAML SP只能将SAML身份验证请求发送到SAML IdP(身份提供者),因为OIDC IdP无法解码SAML身份验证请求。
问题2:使SP重定向到具有某些上下文的OIDC IdP知道要转到SAML。然后,OIDC IdP处理SAML响应,并通过常规OIDC流向SP。
What is best practice to tell IdP to use (redirect to) a certain SAML IdP in certain contexts and prompting for OIDC IdP creds in other contexts?
答案:
OIDC IdP无法解码SAML身份验证请求,因为OIDC和SAML是两个不同的协议。
问题3:使用SAML IdP保留SP,并同时使用OIDC IdP?
答案:
是。您可以使用SAML IdP保留SP,也可以部署OIDC RP(依赖方)以使用OIDC IdP。
(1)身份提供者可以配备OIDC IdP(身份提供者)和SAML IdP,以支持OIDC和SAML协议。
例如,我们已经开发了Zero-Password Authentication and Authorization System作为身份提供者,以支持SAML,OIDC,OAuth和WS-Fed,也就是说,零密码身份验证和授权系统可以为任何人提供身份身份验证/联盟装有SAML SP,OIDC RP,OAuth RP或WS-Fed RP的Web应用程序。
(2)依赖方Web应用程序可以配备OIDC RP(依赖方)和SAML SP(服务提供商),以支持OIDC和SAML协议。
例如,作为依赖方的Web应用程序,可以将Openstack配置为SAML SP或OIDC RP以分别与SAML IdP或OIDC IdP通信。
官方Openstack链接Configuring Keystone for Federation提供了有关如何将Openstack配置为SAML SP或OIDC RP的说明。
问题4:
还有什么?
分辨率:
您的Web应用程序登录页面可以分别为OIDC登录和SAML登录提供两个按钮。
((1)单击OIDC登录]按钮将用户重定向到您的身份提供者的OIDC API。
您的身份提供者的OIDC API将请求用户提交其身份验证凭据,例如用户名/密码。
一旦用户通过身份验证,该用户将被重定向回您的Web应用程序的OIDC API。
最后,用户将登录到您的Web应用程序。
(2)单击SAML登录按钮将用户重定向到您的身份提供者的SAML API。
您的身份提供者的SAML API将请求用户提交其身份验证凭据,例如用户名/密码。
一旦对用户进行身份验证,该用户将被重定向回您的Web应用程序的SAML API。
最后,用户将登录到您的Web应用程序。