实施 OpenID Connect 时,需要身份 (ID) 令牌。当构建执行自己的本地登录/身份验证并委托给第 3 方 IdP(例如通过单点登录)的 SaaS 服务时,SaaS 服务应向 SaaS 服务的使用者提供其 ID 令牌,以及由SaaS 服务,还是上游 IdP 提供的 ID 令牌?
还值得注意的是,SaaS 服务支持并且必须继续支持 SAML。
我研究了这两种方法,但尚未找到明确的答案。
让 SaaS 服务提供 ID 令牌的好处似乎是系统上所有用户的统一性和一致性,无论他们选择哪个 SSO 提供商。
我倾向于使用 OAuth 2.0 中的术语,因为我认为它以最清晰的方式定义了角色。通常OIDC与OAuth 2.0结合使用。
授权服务器
授予访问权限的一方使用其中之一向 OAuth 客户端颁发一致的令牌。 AS 可以完全控制令牌内容。这就是你问题中的SaaS系统。 OAuth 客户端仅与其 AS 交互。
身份提供商
可以有很多这样的,例如:
您的客户端仅与 AS 交互,而 AS 又可以与多个 IDP 交互。
AS验证IDP令牌,然后发行自己的令牌。 AS 使用帐户链接来确保无论用户的登录方式如何,都会向客户端颁发一致的令牌。
SAML 协议
SAML 中的概念是相同的,并且某些系统(例如您的 SaaS 提供商)可以同时充当 AS 和 SAML 服务器。
SAML 客户端可以与与上游 IDP 集成的 SAML 服务器交互。然后,SAML 客户端从 SAML 服务器接收 SAML 断言,您可以控制其内容。
OAuth 客户端可以与使用上游 SAML IDP 的 AS 进行交互。然后,OAuth 客户端从您可以控制其内容的 AS 接收令牌。