OpenID 和 SAML 有什么区别?
它们是两种不同的身份验证协议,在技术层次上有所不同。
从远处看,当用户启动身份验证时,差异就开始了。使用 OpenID,用户登录通常是负责身份验证的资源的 HTTP 地址。另一方面,SAML 基于站点和标识提供程序之间的显式信任,因此很少接受来自未知站点的凭据。
OpenID 身份很容易在网上获得。作为一个开发人员,您可以接受来自非常不同的 OpenID 提供商的用户。另一方面,通常必须事先编写 SAML 提供程序,并且只能将应用程序与选定的标识提供程序联合。可以缩小接受的 OpenID 身份提供者的范围,但我认为这有悖于一般的 OpenID 概念。
使用 OpenID,您可以接受来自任意服务器的身份。有人自称是 http://someopenid.provider.com/john.smith。如何将它与数据库中的用户进行匹配?以某种方式,例如用一个新帐户存储这些信息,并在用户再次访问您的站点时识别这些信息。请注意,关于用户的任何其他信息(包括他的姓名或电子邮件)都是不可信的!
http://someopenid.provider.com/john.smith
另一方面,如果您的应用程序和 SAML Id 提供程序之间存在明确的信任关系,那么您可以获得关于用户的全部信息,包括姓名和电子邮件,并且这些信息可以被信任,这仅仅是因为信任关系。这意味着您倾向于相信 Id 提供程序以某种方式验证了所有信息,并且您可以在应用程序级别信任它。如果用户使用未知提供者发出的 SAML 令牌,则应用程序只是拒绝身份验证。
(增加07-2017,扩大08-2018)
这个答案可以追溯到2011年,当时 OpenID 代表 OpenID 2.0。后来,在2012年的某个地方,OAuth2.0已经出版,在2014年,OpenID 连接(一个更详细的时间轴 给你)。
对于现在阅读这篇文章的人来说—— OpenIDConnect 与原始答案中提到的 OpenID 不同,更确切地说,它是 OAuth2.0的一组扩展。
虽然 这个答案可以从概念上阐明一些观点,但是对于具有 OAuth2.0背景的人来说,一个非常简洁的版本是 OpenID Connect 是实际上是 OAuth2.0,但是它在访问令牌可用之后添加了 查询用户信息的标准方式。
回到最初的问题—— OpenID Connect (OAuth2.0)和 SAML 之间的主要区别是应用程序和身份提供者之间如何建立信任关系:
SAML 在数字签名上构建信任关系,身份提供者发出的 SAML 令牌是签名的 XML,应用程序验证签名本身及其呈现的证书。用户信息包含在 SAML 令牌中,以及其他信息。
OAuth2在从应用程序到标识的直接 HTTP 调用上构建信任关系。请求包含访问令牌(由应用程序在协议流期间获得) ,响应包含有关用户的信息。
OpenID Connect 进一步扩展了这一功能,使得从应用程序调用身份提供者这一额外步骤获得身份 没有成为可能。这个想法是基于这样一个事实: OpenID Connect 提供商实际上发布了 二令牌、 access_token、同一个 OAuth2.0以及新的 id_token令牌,它是由身份提供商发布的 智威汤逊令牌、 签了令牌。应用程序可以使用 id_token建立一个本地会话,基于 JWT 令牌中包含的声明,但是 id_token 不能使用可以进一步查询其他服务,这种对第三方服务的调用仍然应该使用 access_token。您可以将 OpenID Connect 视为 SAML2(签名令牌)和 OAuth2(访问令牌)之间的混合体,因为 OpenID Connect 同时涉及两者。
access_token
id_token
OpenID 和 SAML2都基于相同的联邦身份概念。以下是他们之间的一些区别。.
将技术细节放在一边,对于这个聚会来说已经太晚了,我所理解的 SAML 和其他认证标准(inc.)之间最大的区别在于。OpenID)
SAML 要求身份提供者(Identity Provider,IDP)和服务提供者(Service Provider,SP)事先了解对方、 预先配置好的、 静电干扰认证和授权。OpenId (+ Connect)没有这样的要求。
这对于想要完全控制谁访问数据的 IDP 来说很重要。标准的一部分是配置提供给特定 SP 的内容。
例如,银行可能不希望其用户访问任何服务,除了一些预定义的服务(由于法规或其他严格的安全规则)。
这并不意味着 OpenId IDP 不能强制执行这样的限制。OpenID 实现者可以控制访问,但这不是 OpenID 的目的。
除了预定义的、严格的、静态的、访问控制的不同之外,从概念上(不是技术上) ,OpenID 连接和 SAML是相似的。
底线是,如果你是 SP,你应该支持客户的需求:
SAML 和 OpenID 都可以作为身份提供者(缩写为 IdP) ,即分散式身份验证协议(单点登录身份)。
是的ecurityAssertionMarkupL语言(SAML)是一组用于跨安全域交换身份验证和授权数据的配置文件。在 SAML 域模型中,身份提供者是一种特殊类型的身份验证授权机构。具体来说,SAML 标识提供程序是一个系统实体,它与 SAML 的 SSO 配置文件一起发出身份验证断言。使用这些身份验证断言的依赖方称为 SAML 服务提供者。来源
Pen身份证 Conconnect (OIDC)是在授权框架 OAuth 2.0之上的一个身份验证层。该标准由 OpenID 基金会控制。OAuth 用于授权协议,而不是身份验证协议和专门设计为身份验证协议的 OpenID。OIDC 使用简单的 JSON Web 令牌(JWT) ,它们更容易被 JavaScript 使用。
来源