SAML2.0 浅入深出《一》

目录
1、什么是SAML
2、有哪些应用场景
3、SAML身份验证的工作原理

1、什么是SAML?

SAML 的英文全称是Security Assertion Markup Language(发音sam-el),即安全断言标记语言。是一种支持单点登录(SSO)的开放标准。通过仅使用一组登录凭据访问一系列资源,您可以提供对资源的无缝访问并消除不安全的密码扩散。

SAML是OASIS安全服务技术委员会的一个产品,始于2001年SAML1.0,其最近发布于2005年SMAL2.0
它是一个基于XML的开源标准数据格式,专门支持身份联合,使身份提供商(IdP)能够将经过身份验证的身份及其他属性无缝且安全的传递给服务提供商(SP)。

2、有哪些应用场景?

  • 网页浏览器单点登录
  • 联合身份
    网页浏览器单点登录相信大家都很好理解他的流程(Google SSO),那么我就通过一个生活实例给讲解下什么是联合身份的问题吧~

大家都知道欧盟是多个国家组合在一起的总称,联合身份就像是欧盟身份证

  1. Bob 是其中欧盟体中A国的合法公民,可以在A国任意出行
  2. Bob 去欧盟体中B国出差,到达目的地后,工作人员需要Bob出示证件证明其身份(-->SP的入口)
  3. Bob没有B国身份证,因为B国也是欧盟一员,于是Bob就去找欧盟颁发了一个欧盟身份证 (-->在IdP进行身份核验)
  4. Bob将其欧盟身份证交给B国工作人员,工作人员去“欧盟系统”查询这个身份是否合法(-->SP向IdP发送请求,要求验证信息)
  5. “欧盟系统”返回Bob是欧盟国内的公民,最终工作人员核验过身份信息后就让Bob进去了(-->IdP回复SP信息无误,SP允许该用户访问系统)

3、SAML身份验证的工作原理

服务提供商首先要和身份提供商建立信任,通过SAML协议传递认证信息
要访问服务提供商的用户必须首先通过IDP进行身份验证

一起推演身份验证流程

  1. IdP 具备用户及属性数据,例如:userName、Email等
  2. 身份提供商IdP生成用户的信息,将用户标示符填充到断言中,并发送给服务提供商SP,SP可以验证断言。但是我们不能仅以明文形式发送,因为数据完全不受保护,因此IdP必须首先对断言进行签名,这样SP可以验证断言的颁发者,从而得到信任
  3. SP读取用户标示符,尝试将其映射到其应用下的用户。在这种情况下,有可能由于未找到用户属性而失败,因此为了使联邦工作,我们需要建立一些整合规则,例如SP可能会指示用户标示符号的格式必须为Email,IdP为与其匹配必须同意并配置
  4. 当双方具有相同的配置时,SAML断言就映射到服务提供商SP的用户对象,从而服务

因此提供者可以允许访问配置和集成规则对成功建立这些配置的SAML联合至关重要
配置和系统证书可以手动输入到SP/IdP中,但是通常你会收集需求和功能到XML元数据文件中,通过交换这些文件,配置联邦

元数据交换是建立在信任含有用户标示符格式的元数据文件
元数据需要遵循名称、ID、格式的标准

元数据通常包含:

  1. 发件人的证书(作用:接收人可以使用证书验证断言的签名,并知道它来自受信任的一方
  2. 实体标示符号(唯一的标示发送者/接收者
  3. 关于SP和IdP之间交换消息的协议
    参考SMAL2.0技术视频

你可能感兴趣的:(SAML2.0 浅入深出《一》)