【安全断言标记语言之SAML介绍】

Security Assertion Markup Language 2.0 (SAML 2.0) is a version of the SAML standard for exchanging authentication and authorization data between security domains. SAML 2.0 is an XML-based protocol that uses security tokens containing assertions to pass information about a principal (usually an end user) between a SAML authority, named an Identity Provider, and a SAML consumer, named a Service Provider. SAML 2.0 enables web-based authentication and authorization scenarios including cross-domain single sign-on (SSO), which helps reduce the administrative overhead of distributing multiple authentication tokens to the user

SAML即安全断言标记语言,英文全称是Security Assertion Markup Language。它是一个基于XML的标准,用于在不同的安全域(security domain)之间交换认证和授权数据。在SAML标准定义了身份提供者(identity provider)和服务提供者(service provider),这两者构成了前面所说的不同的安全域。 SAML是OASIS组织安全服务技术委员会(Security Services Technical Committee)的产品。

 

SAML(Security Assertion Markup Language)是一个XML框架,也就是一组协议,可以用来传输安全声明。比如,两台远程机器之间要通讯,为了保证安全,我们可以采用加密等措施,也可以采用SAML来传输,传输的数据以XML形式,符合SAML规范,这样我们就可以不要求两台机器采用什么样的系统,只要求能理解SAML规范即可,显然比传统的方式更好。SAML 规范是一组Schema 定义。

可以这么说,在Web Service 领域,schema就是规范,在Java领域,API就是规范。

 

SAML 作用

SAML 主要包括三个方面:

1.认证申明。表明用户是否已经认证,通常用于单点登录。

2.属性申明。表明 某个Subject 的属性。

3.授权申明。表明 某个资源的权限。

  

SAML框架

SAML就是客户向服务器发送SAML 请求,然后服务器返回SAML响应。数据的传输以符合SAML规范的XML格式表示。

SAML 可以建立在SOAP上传输,也可以建立在其他协议上传输。

因为SAML的规范由几个部分构成:SAML Assertion,SAML Prototol,SAML binding等

 

安全 

由于SAML在两个拥有共享用户的站点间建立了信任关系,所以安全性是需考虑的一个非常重要的因素。SAML中的安全弱点可能危及用户在目标站点的个人信息。SAML依靠一批制定完善的安全标准,包括SSL和X.509,来保护SAML源站点和目标站点之间通信的安全。源站点和目标站点之间的所有通信都经过了加密。为确保参与SAML交互的双方站点都能验证对方的身份,还使用了证书。

 

 

SAML提供以下几种不同类型的安全断言:

1)认证断言(Authentication Assertion):认证断言用来声称消息发布者已经认证特定的主体。

2) 属性断言(Attribute Assertion):属性断言声称特定主体具有特定的属性。属性可通过URI(统一资源标识)或用来定义结构化属性的一种扩展模式进行详细说明。

3)决定断言(Decision Assertion):一个决定断言报告了一个具体授权请求的结果。

4)授权断言(Authorization Assertion):授权断言声称一个主体被给予访问一个或多个资源的特别许可。

 

SAML  2 种典型模式

在协议的角度 SAML 原理非常类似 CAS  Kerberos  CAS 协议依赖于 CAS Server  Kerberos 依赖于 KDC ,而 SAML 则依赖于 Identity Provider 

根据 Service Provider( 以下简称 SP)  Identity Provider( 以下简称 IDP) 的交互方式, SAML 可以分为以下几种模式:一种是 SP 拉方式,一种是 IDP 推方式。

 SAML 中,最重要的环节是 SP 如何获取对 Subject 的断言, SP 拉方式是 SP 主动到 IDP 去了解Subject 的身份断言,而 IDP 推方式则是 IDP 主动把 Subject 的身份断言通过某种途径告诉 SP 

2.2.1 SAML  POST/Artifact Bindings 方式(即 SP 拉方式)

该方式的主要特点是, SP 获得客户端的凭证  IDP  Subject 的一种身份认可 之后,主动请求 IDP Subject 的凭证的断言。如下图所示: Subject 是根据凭证去访问 SP 的。凭证代表了 Subject 的身份,它类似于“来自 IDP 证明:我就是 Peter ,法国公民”。

现在,让我们看看 SP 拉方式是如何进行的:

Subject 访问 SP 的受保护资源, SP 发现 Subject 的请求中没有包含任何的授权信息,于是它重定向用户访问 IDP.

      SAML 基本概念
       

协议执行:

1, Subject  IDP 请求凭证 方式是提交用户名 / 密码

2, IDP 通过验证 Subject 提供的信息,来确定是否提供凭证给 Subject

3, 假如 Subject 的验证信息正确,他将获取 IDP 的凭证以及将服务请求同时提交给 SP 

4, SP 接受到 Subject 的凭证,它是提供服务之前必须验证次凭证,于是,它产生了一个 SAML 请求,要求 IDP 对凭证断言

5, 凭证是 IDP 产生的,它当然知道凭证的内容,于是它回应一个 SAML 断言给 SP

6, SP 信任 IDP  SAML 断言,它会根据断言结果确定是否为 Subject 提供服务。

4.2.1 SAML  Redirect/POST Bindings 方式  IDP 推方式

该方式的主要特点是, IDP 交给 Subject 的不是凭证,而是断言。

过程如下图所示:

         SAML 基本概念
       1
  Subject 访问 SP 的授权服务, SP 重定向 Subject  IDP 获取断言。

       2  IDP 会要求 Subject 提供能够证明它自己身份的手段 (Password  X.509 证书等

       3  Subject  IDP 提供了自己的帐号密码。

       4  IDP 验证密码之后,会重订向 Subject 到原来的 SP 

       5  SP 校验 IDP 的断言 注意, IDP 会对自己的断言签名, SP 信任 IDP 的证书,因此,通过校验签名,能够确信从 Subject 过来的断言确实来自 IDP 的断言 

       6 ,如果签名正确, SP 将向 Subject 提供该服务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值