CISSP考点拾遗——Oauth、OpenID、OIDC、SAML、XACML、SPML

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,这两个都是联合身份认证(考试时也很可能是“联邦”)的代表,它们的基本工作流程是一致的,如下图:


  1. 用户请求访问服务提供者(Service Provider, SP)的资源或向服务提供者发起登录请求;
  2. SP将用户重定向到身份提供者(IdP);
  3. 用户在IdP处进行认证;
  4. IdP生成一个身份凭证(在OIDC是身份令牌ID Token,在SAML是断言Assertion)并返还给用户客户端;
  5. 用户客户端向SP出示该身份凭证
  6. SP向IdP验证凭证,从中提取用户信息以授予访问权限
  7. 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可以用于在这两个环境中相互同步用户属性和权限,确保一致性
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容