OpenID和SAML有什么区别?

met*_*dos 136 openid saml

OpenID和SAML有什么区别?

Wik*_*hla 153

原始OpenID 2.0与SAML

它们是两种不同的身份验证协议,它们在技术层面上有所不同.

从远处看,差异在用户启动身份验证时开始.使用OpenID,用户登录通常是负责身份验证的资源的HTTP地址.在另一方面,SAML是基于您的网站和身份提供者之间的明确的信任所以这是相当罕见的接受未知网站的凭据.

OpenID身份很容易搞定.作为开发人员,您可以接受来自非常不同的OpenID提供商的用户.另一方面,SAML提供程序通常必须提前编码,并且您只需将选定的身份提供程序与应用程序联合.可以缩小已接受的OpenID身份提供者列表,但我认为这将违反一般的OpenID概念.

使用OpenID,您可以接受来自任意服务器的身份.有人声称是http://someopenid.provider.com/john.smith.您将如何与数据库中的用户匹配?不知何故,例如,通过使用新帐户存储此信息,并在用户再次访问您的网站时识别此信息.请注意,有关用户的任何其他信息(包括他的姓名或电子邮件)都不可信任!

另一方面,如果您的应用程序与SAML Id提供程序之间存在明确的信任关系,您可以获取有关该用户的完整信息,包括名称和电子邮件,并且这些信息可以信任,这仅仅是因为信任关系.这意味着您倾向于认为Id Provider以某种方式验证了所有信息,您可以在应用程序级别信任它.如果用户带有由未知提供商颁发的SAML令牌,则您的应用程序只会拒绝身份验证.

OpenID Connect与SAML

(部分添加07-2017,扩展08-2018)

这个回答是2011年的,当时OpenID代表OpenID 2.0.后来,在2012年的某个地方,OAuth2.0已经发布,并在2014年发布了OpenID Connect(这里有更详细的时间表).

任何人阅读此时下- ID连接是不一样的OpenID原来答案是指,而这是一组扩展的OAuth2.0的.

虽然这个答案可以从概念角度来看一些启发,一个非常简洁的版本与OAuth2.0的背景有人来是ID连接事实上OAuth2.0的,但它增加了一个标准的方式查询用户信息,访问令牌后是可用的.

参考原始问题 - OpenID Connect(OAuth2.0)和SAML之间的主要区别在于如何在应用程序和身份提供者之间建立信任关系:

  • SAML在数字签名上建立信任关系,由身份提供者发布的SAML令牌是签名的XML,应用程序验证签名本身及其提供的证书.除了其他信息之外,用户信息还包括在SAML令牌中.

  • OAuth2在从应用程序到身份的直接HTTPs调用上构建信任关系.该请求包含访问令牌(在协议流程中由应用程序获取),并且响应包含有关用户的信息.

  • OpenID Connect进一步扩展了这一点,使得可以获得身份,而无需涉及从应用程序到身份提供者的调用的额外步骤.这个想法是基于这样一个事实,即OpenID Connect提供商实际上发布了两个令牌,access_token一个是OAuth2.0,id_token另一个是由身份提供商签署的新签名,即JWT令牌.应用程序可以使用id令牌根据JWT令牌中包含的声明建立本地会话,但id令牌不能用于进一步查询其他服务,此类对第三方服务的调用仍应使用访问令牌.您可以将OpenID Connect视为SAML2(签名令牌)和OAuth2(访问令牌)之间的混合,因为OpenID Connect只涉及两者.

  • "信任"的概念在SAML文化中非常重要,因为它来自联邦文化.在SAML联合中,帐户应该是与具有当前关系的单个人的1:1关系,其中IdP"断言"用户身份验证和授权.在联合中运营IdP的实体必须遵守有关帐户货币和验证的治理.为了说明,帐户取消配置和基于角色的帐户(允许性)可能是特别不同的领域.此外,SAML越来越"企业化",OpenID更加"webby". (12认同)

Pra*_*ena 86

OpenID和SAML2都基于联合身份的相同概念.以下是它们之间的一些区别..

  1. SAML2支持单点注销 - 但OpenID不支持
  2. SAML2服务提供商与SAML2身份提供商配合使用,但OpenID依赖方未与OpenID提供商配合使用.OpenID有一个发现协议,一旦给出OpenID,它就会动态发现相应的OpenID Provider.SAML具有基于身份提供商发现服务协议的发现协议.
  3. 使用SAML2,用户与SAML2 IdP耦合 - 您的SAML2标识符仅对发布它的SAML2 IdP有效.但是使用OpenID,您拥有自己的标识符,并且可以将其映射到您希望的任何OpenID提供程序.
  4. SAML2具有不同的绑定,而唯一绑定的OpenID具有HTTP
  5. SAML2可以是已启动的服务提供商(SP)或已启动的身份提供商(IdP).但OpenID始终是SP发起的.
  6. SAML 2基于XML而OpenID不是.
  7. 过去3年开发的大多数应用程序仅支持OpenID Connect.
  8. 2018年5月,Microsoft Azure AD提交的8B +认证请求中有92%来自OpenID Connect启用的应用程序.


Ali*_*aka 14

把技术细节放在一边,为聚会迟到,我明白SAML和其他auth标准(包括OpenID)之间的最大区别在于

SAML要求身份提供商(IDP)和服务提供商(SP)在事先了解彼此,预配置,静态身份验证和授权.OpenId(+ Connect)没有这样的要求.

这对于希望完全控制谁访问数据的国内流离失所者来说非常重要.标准的一部分是配置提供给特定SP的内容.

例如,银行可能不希望其用户访问除某些预定义服务之外的任何服务(由于法规或其他严格的安全规则).

这并不意味着OpenId IDP不能强制执行这样的限制.OpenID实现者可以控制访问,但这不是OpenID的目的.

除了预定义的,严格的,静态的,访问控制差异,概念上(不是技术上),OpenID ConnectSAML是相似的.

最重要的是,如果您是SP,您应该支持客户的要求:

  1. 如果您的客户是个人最终用户(例如使用他们的Google ID),请忘记SAML.使用OpenID Connect.
  2. 如果您的客户是希望其员工使用您的服务并仅导出其将提供给您的服务的静态数据列表的银行,则银行可能会希望您支持SAML.银行可能有一个客户端限制的OpenID实现,这将是你的幸运日:)

  • 这是最简单的表达方式。很好的例子,谢谢解释! (2认同)

Pre*_*raj 9

SAML和OpenID都可以充当身份提供者(缩写为IdP),即分散式身份验证协议(单点登录身份)。

小号 ecurity ssertion 中号 arkup 大号 anguage(SAML)是一组用于在安全域交换认证和授权数据型材。在SAML域模型中,身份提供者是一种特殊的身份验证授权。具体来说,SAML身份提供者是与SAML的SSO配置文件一起发出身份验证断言的系统实体。消耗这些身份验证断言的依赖方称为SAML服务提供程序。资源

øID Ç ONNECT(OIDC)是上的OAuth 2.0,授权框架之上的认证层。该标准由OpenID Foundation控制。OAuth用于授权协议,而不是专门用于身份验证协议的身份验证协议和OpenID。OIDC使用简单的JSON Web令牌(JWT),它们更易于被JavaScript使用。

用例场景:

如果您的用户可能只想使用Facebook或Twitter登录,请使用OAuth。如果您的用户因为自己“不想让任何人拥有自己的身份”而运行自己的OpenID提供程序的胡须,请使用OpenID。

在此处输入图片说明
资源