SAML简介、Pingfederate

SAML(Security Assertion Markup Language)即安全断言标记语言,是为了解决Web浏览器单点登陆的问题而产生的(使用 SAML标准作为安全认证和共享资料的中间语言,能够在多个站点之间实现单点登录),是OASIS组织安全服务技术委员会(Security Services Technical Committee)的产品。它是一个XML框架,也就是一组协议和规范,用于 在不同的安全域(security domain)之间交换认证和授权数据。SAML标准定义了身份提供者(identity provider)和服务提供者(service provider),这两者构成了前面所说的不同的安全域。 SAML建立在XML、XML Schema、XML Signature、XML Encryption、HTTP、SOAP等一系列既存的标准下,可以建立在SOAP上传输,也可以建立在其他协议上传输(HTTP, SMTP, FTP等)。 SAML依靠一批制定完善的安全标准,包括 SSL、TLS、X.509,来保护SAML源站点和目标站点之间通信的 安全。源站点和目标站点之间的所有通信都经过了加密。为确保参与SAML交互的双方站点都能验证对方的身份,还使用了证书。SAML使用XML Signature和XML Encryption保证消息层面的安全( 加密保证机密性、签名保证完整性)。

SAML 1.1 vs SAML 2
SAML是为了解决Web浏览器单点登陆的问题而产生的,使用SAML标准作为安全认证和共享资料的中间语言,能够在多个站点之间实现单点登录。但是,SAML1.1就这个目的而言是有局限的,事实上,SAML1.1通过使用SAML作为WS-Security令牌,更有效地解决的问题是SOAP Web服务的身份认证和授权。SAML 2明确包含了用于解决Web浏览器进行多网站验证问题的新特性。
SAML简介、Pingfederate_第1张图片
SAML简介、Pingfederate_第2张图片
SAML简介、Pingfederate_第3张图片

SAML是一种基于XML语言用于传输认证及授权信息的框架,以与主体相关的断言形式表达。在这里, 主体是一个实体(人或计算机),这个实体在某个安全域中拥有一个特定身份,断言可传递主体执行的认证信息、属性信息及关于是否允许主体访问其资源的授权决定。

SAML定义三种元件:断言(SAML Assertion)、协议(SAML Prototol)以及约束(SAML binding)。
SAML存在多种断言:认证断言(Authentication Assertion)、属性断言(Attribute Assertion)、授权断言(Authorization Assertion)、决定断言(Decision Assertion)。 认证断言确认用户的身份,表明用户是否已经登录,通常用于单点登录; 属性断言包含特定的主题信息; 授权断言确认特定主题是否得到授权。 决定断言报告了一个具体授权请求的结果。一个断言可以以如下格式描述: Assertion A was issued at time t by issuer R regarding subject S provided conditions C are valid.
协议定义SAML如何请求和接收断言。
约束定义如何将SAML消息交换映射成简单对象访问协议(SOAP)的对象。

Saml使用流程
简单地说, SAML就是一方向另一方发送SAML 请求,然后另一方返回SAML响应。发送方和请求方之间 传递的是用户认证和授权数据。传输的数据必须符合SAML规范要求。连接中的任何一方都可以发起请求,根据身份不同,分为:IDP init请求,和SP init 请求。 例子:公司( idp)的用户要访问SAAS 应用( sp),为了保证身份安全,我们可以采用除了加密签名等措施,还要采用SAML规范来传输,传输的数据以XML形式,内容符合SAML的推荐标准,这样我们就可以不要求idp和sp采用什么样的系统,只要求能理解SAML规范即可,显然比传统的方式更好。

SP init: 就是用户去访问服务提供者SP提供的服务,服务提供者发现用户没有登陆,系统重定向到身份提供者Idp的登陆页面让用户登陆,然后再自动重定向到服务提供者的初始请求页面,用户就能正常使用服务了
Idp init: 就是用户先在身份提供者Idp上登陆,然后重定向到服务提供者SP的一个landing页面开始使用服务。

Pingfederate, 基于Java平台,除了支持SAML 2.0和1.1外, 还支持WS-Federation (微软主推),近两年又推出支持Oauth的版本(6.6以后)。

参考:
Saml - 百度百科
saml - 百度文库
Web 单点登录系统
Security Assertion Markup Language - 维基百科

你可能感兴趣的:(ping)