问题 1:
让 SP 和 SAML 进行通信,然后将 SAML 响应传递给 IdP 进行翻译(这似乎不正确并且容易被滥用)
回答:
OIDC 和 SAML 是两种不同的身份联合协议,允许第三方身份提供者为依赖方 Web 应用程序提供身份验证服务。
SAML SP 只能向 SAML IdP(身份提供者)发送 SAML 身份验证请求,因为 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:
让 SP 使用 SAML IdP 并让它使用 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,即零密码认证和授权系统可以提供身份认证/federation 适用于配备 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。
最终用户将登录到您的网络应用程序。
(2) 点击SAML登录按钮将用户重定向到您的身份提供者的SAML API。
您的身份提供者的 SAML API 将要求用户提交他们的身份验证凭据,例如用户名/密码。
用户通过身份验证后,用户将被重定向回您的 Web 应用程序的 SAML API。
最终用户将登录到您的网络应用程序。
后续问题:
我想要做的是让 OIDC IdP 成为 SAML 提供商的 SP,这样我的所有 OIDC RP 就不必也是 SAML SP。有没有常见的处理方法?
我试图不让我的客户端应用程序 (RP) 依赖 SAML。但是,如果 IdP 可以根据该身份验证响应发出 SAML 请求,那么 OIDC 似乎可以提供 OIDC 身份验证响应。
回答:
(1) 实现 OIDC IdP 的 SAML SP 功能(即将 OIDC IdP 作为 SAML IdP 的 SAML SP)是一种成本高昂的解决方案。
(I) OIDC IdP 向 SAML IdP 发送 SAML 身份验证请求
(II) OIDC IdP 解码来自 SAML IdP 的 SAML 响应
(III) OIDC IdP 将 SAML 断言转换为 OIDC 令牌(即将 SAML 响应转换为 OIDC RP 可以解码的 OIDC 响应)
RFC 7521 Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants 和 RFC 7522 Security Assertion Markup Language (SAML) 2.0 Profile for OAuth 2.0 Client Authentication and Authorization Grants 支持带有授权授予流程的 SAML 2 承载配置文件。
Microfocus 在Exchange SAML 2 Assertion with OAuth Access Token 上提供说明。
WSO2 还提供了关于Exchanging SAML2 Bearer Tokens with OAuth2 - SAML Extension Grant Type 的指令。
(2) 具有成本效益的解决方案是
(I) Web 服务器同时托管 OIDC IdP 和 SAML IdP,然后利用 HAProxy 配置 OIDC IdP 和 SAML IdP 以使用子域,
例如,oidcidp.your-domain.com 和 samlidp.yourdomain.com
OIDC IdP 和 SAML IdP 可以使用相同的数据存储或数据存储库(例如 OpenLDAP)来验证用户名/密码凭据。
(II) OIDC RP 与 OIDC IdP 通信,SAML SP 与 SAML IdP 通信。
(3) 解决问题 4 描述了另一种具有成本效益的解决方案。
您的身份提供者同时实现了 OIDC IdP API 和 **SAML IdP API”以分别与 OIDC RP 和 SAML SP 进行通信。