Oauth:Open Authorization
OpenID:直观得没法解释
OIDC:OpenID Connect
SAML:Security Assertion Markup Language
XACML:eXtensible Access Control Markup Language
SPML:Service Provisioning Markup Language
OIDC和SAML的联系
OIDC(OpenID Connect)和SAML,这两个都是联合身份认证(考试时也很可能是“联邦”)的代表,它们的基本工作流程是一致的,如下图:

- 用户请求访问服务提供者(Service Provider, SP)的资源或向服务提供者发起登录请求;
- SP将用户重定向到身份提供者(IdP);
- 用户在IdP处进行认证;
- IdP生成一个身份凭证(在OIDC是身份令牌ID Token,在SAML是断言Assertion)并返还给用户客户端;
- 用户客户端向SP出示该身份凭证
- SP向IdP验证凭证,从中提取用户信息以授予访问权限
- SP向用户提供服务
注意此时并不一定发生SP到IdP的即时互动,一般会依赖数字签名等验证机制,当然也就需要“事先共享的安全基础”(考试时挺爱玩这种模糊化表述的),比如SP和IdP建立联邦关系时相互登记的证书。
总的说来,两者都是联合身份认证的协议,都用于实现SSO,都用于不同系统间共享用户身份信息,都支持跨域认证。
注意,联合身份认证是SSO的一种实现。
OIDC和SAML的区别
- OIDC基于JSON API,适合各种现代应用,包括web应用和移动应用,传递的身份凭证是JWT(JSON Web Token)格式的令牌(ID Token);
- SAML基于XML,更适合传统Web应用,传递的身份凭证是XML格式的断言(Assertion)。
Oauth、OpenID、OIDC的关系
- 原始的OpenID事实上已被废弃,现在业内使用的OIDC(OpenID Connect)是结合了OpenID 2.0、OpenID Attribute Exchange 1.0的特性,并运行在Oauth2.0之上的身份层协议。
- OIDC建立在OAuth 2.0之上,OAuth 2.0提供授权,OIDC在其基础上增加了认证功能。
- Oauth2.0使用JSON API,OIDC运行于其上,所以也是使用JSON API。
SAML、XACML的联系
- 都基于xml
- SAML和XACML都提供了Web服务环境中的身份验证和授权机制
- SAML v2.0包含一个XACML绑定
SAML、XACML的区别
· SAML ·
- SAML是为安全属性的安全传递而设计的;
- 考试中最常见的用途是传递身份凭证,包括认证authentication和授权authorization,但也可以传递其他安全属性;
- 由于能传递,所以才能“在多个系统间共享身份信息”
· XACML ·
- XACML用于描述访问控制策略,以及用于描述资源访问请求和授权决定;
- 在XACML规范中没有传输机制;
所以SAML v2.0包含一个XACML绑定以支持网络传输 - XACML是ABAC的典型工具。
SAML、SPML的联系
- 都基于xml
- 没了
SAML、SPML的区别
SAML和SPML字面上长得有点像。在用语不太精确的情况下,都会说它们用于“共享身份信息”,所以感觉不太容易区分,其实这是两个完全不同领域的规范。
· SAML ·
- 传递的是身份认证和授权的信息,是身份被使用的过程相关的规范
- 涉及SSO单点登录
· SPML ·
使用 XML 格式来描述用户账号的生命周期管理,包括用户账号的创建、更新、删除和查询等
SPML 不关注身份验证,不涉及登录,而是关注账号管理
SPML 主要用于简化用户账号和资源的管理,自动化重复的操作
SPML 在多系统、多平台环境中提供账号、资源和权限管理的一致性和便捷性
-
SPML典型的场景举几个例子:
- 当新员工入职,HR在人事管理系统录入相关信息完成入职手续,人事管理系统可通过 SPML自动向活动目录、LDAP等创建用于使用IT资源的用户账号,并配置必要权限;
当其休假、离职或调岗时也一样,账号可以基于人事状态自动禁用或调整到新的所属OU/Group等;
以上不用再走内部流程工单,无需IT管理员介入,无需对其他系统做任何关于账号的专门操作 - 多云环境中,可以使用 SPML 进行跨多个云服务提供商的用户账号管理。比如一个企业使用 AWS 和 Azure 两个平台,SPML可以用于在这两个环境中相互同步用户属性和权限,确保一致性
- 当新员工入职,HR在人事管理系统录入相关信息完成入职手续,人事管理系统可通过 SPML自动向活动目录、LDAP等创建用于使用IT资源的用户账号,并配置必要权限;