安全断言标记语言(SAML)和OpenIDConnect(OIDC)是两种较为常见的身份验证协议和身份标准,有各自的优缺点和差异性。本文将对比SAML和OIDC两种协议探究各自的企业用例,以及每种协议对身份和访问管理(IAM)的贡献。两种协议都支持单点登录(SSO),但在部署之前需要明确两者在技术和概念上的差异:SAML的重点在于安全授予跨域网站访问权限,而OIDC为移动应用和Web应用提供了额外的情境。 1。SAML和OIDC的差异 在比较SAML2。0和OIDC协议之前,首先要比较SAML和OAuth协议,OAuth是OIDC的基础,OIDC通过身份层在此基础上进行了扩展,实现去中心化的身份验证服务。OpenID开源社区于2005年启动了OpenID的开发项目。据基金会称,现在已有来自超过50,000多个网站的10亿多个用户账号启用OpenID,管理支持OIDC身份验证、OIDC社区以及合规操作的基础架构。 而SAML2。0是一个开放标准,自2003年以来一直为商用、私用身份提供程序(IdP)和服务提供程序(SP)提供身份验证和授权功能。SAML最初使用基于可扩展标记语言(XML)的框架来实现单点登录,允许IdP和SP彼此独立,支持集中式用户管理。下节将介绍SAML的工作原理,探究协议中的每个组件。 2。SAML的实现原理 上文提到,SAML是一种用于身份验证和授权的开放标准,通过身份联合提供对Web应用的单点登录访问。SAML从IdP中继用户凭证来验证访问权限和SP,其中服务提供提供程序(SP)需要在授予用户访问权限之前进行身份验证。每个用户或组都有各自的属性概括了配置文件信息,并声明具体的访问权限。 SAML使用XML元数据文档,也就是SAML令牌进行断言,验证用户身份和访问权限。 SAML插件通常会用在应用或资源中实现单点登录,确保符合安全要求,协议中的凭证和断言明确了访问准入的身份。此外,SAML还能用于控制身份在应用中的访问权限。SAML的核心组件包括IdP、SP、客户端和属性,这些组件可以交换用户信息从而控制准入。 1)身份提供程序(IdP) IdP是维护管理数字身份的服务,在整个应用、网络和Web服务范围内验证用户凭证,主要作用是保护用户凭证的完整性,并在需要单点登录的地方提供用户身份联合。 2)客户端 客户端是指使用由IdP管理的凭证对服务进行身份验证的用户。举例来说,企业可以通过SAML协议批准员工使用企业邮箱和密码完成单点登录来访问所需服务。 3)属性 SAML还负责将称为断言的消息从IdP传输到SP。这些断言通过验证、授权和确定客户端的权限级别来设置访问事件的所有相关安全要求。这一过程中会使用部门、邮件和角色等属性实施访问管理和准入控制。有时还会使用自定义属性扩展SAML协议以支持自定义软件。 4)服务提供程序(SP) SP是用户使用SAML进行单点登录后通过身份验证所要使用的资源,通常是私有网站或应用。SP在授予用户访问权限之前会先接收或拒绝IdP针对客户端配置文件发送的断言。SP会向IdP发送身份验证请求,然后客户端会向IdP发送断言作为响应。这一过程有时会颠倒顺序,IdP可以以任何一种顺序开始登录流程。 3。OIDC的实现原理 OIDC在OAuth协议上进行了扩展,主要组件包括OAuth协议的基础框架加上具有唯一性的用户工作流。OIDC让客户端服务也就是应用通过OpenID验证服务器核验用户身份并通过RESTfulAPI交换配置文件信息,这些API会分派JSONWeb令牌(JWT)用于身份验证过程中的信息共享。这种方法具有高度的可扩展性和跨平台的灵活性,而且实施相对简单,吸引了很多开发人员。 4。用户认证 用户是资源所有者,通过授权服务器的身份验证后获取客户端应用的访问权限,授权服务器会授予用户访问令牌,允许应用从用户信息(UserInfo)端点接收同意信息,用户信息端点受到OpenID服务器的保护,服务器中的JSON对象包含了有关每个用户的断言。随后服务器将身份验证信息编码在应用接收的ID令牌中,信息缓存后就能实现可扩展性以及个性化的终端用户体验。 5。基于OAuth2。0协议 OIDC建立在OAuth2。0框架的基础上,OAuth2。0标准可授予第三方应用和服务访问用户ID资源的权限。用户凭证并不是通过网络发送,也不会存储在第三方服务器上,因此提高了资源安全性,也方便了管理员操作。 6。SAML和OIDC的相似性与差异性 相似性SAML和OIDC都是实现单点登录的身份协议。SAML和OIDC都是安全成熟、有据可查的技术。用户都通过IdP进行一次身份验证后就可以访问信任IdP的其他应用。部分零信任服务都会在信任链的每个节点进行身份验证,并使用另一种验证方法定期验证访问。登录工作流对于终端用户似乎都一样,但后台的技术实现却有着千差万别。 差异性很多开发人员认为OIDC的实现更简单,不需要XML处理。OIDC缺乏权限等用户授权数据,重点关注身份断言。SAML是身份数据的交换,功能更加丰富OIDC支持去中心化的身份验证。SAML使用断言,OIDC和OAuth使用ID令牌。OIDC专为API工作负载而设计,可用于保护API。 7。用例 开发人员和企业应选择最适合自身特定用例的解决方案,部分情况也可以采用组合方案。OIDC要用于需要请求访问令牌的反向通道网站和移动应用。 SAML几乎都用于前向通道网站访问,这类访问中用户会触发应用的身份验证,并且假定客户端应用(Web服务)在与用户设备以外的其他设备上运行。以下是针对两种协议用例的一些通用提示: 移动应用通常使用OIDC类型的轻量化服务,开发人员使用的工具很大一部分都是预构建工具,也可以从插件库中获得。内置SAML的应用使用很简单,只涉及SAML。使用SAML从门户访问企业应用。使用OAuth2。0或OIDC服务保护API或公开API。企业有时更喜欢用SAML,因为可以自定义,而且优先交换安全数据。有监管要求的行业几乎都会用SAML保护用户敏感信息。 OIDC和SAML协议之间不会相互排斥,企业可以考虑将SAML用于单点登录,保护资源访问,对于具有高可扩展性要求的移动化用例则可以使用OIDC。总的来说,两者各有其优点,都支持单点登录服务。