`
gaojingsong
  • 浏览: 1182533 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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

    博客分类:
  • CAS
阅读更多

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
2
分享到:
评论

相关推荐

    安全和权限处理三种xml手段.doc

    【安全和权限处理三种XML手段】的文档主要讨论了Web Services安全性(WSS)、安全性断言标记语言(SAML)和可扩展访问控制标记语言(XACML)这三种XML技术在安全和权限管理中的应用。 Web Services安全性(WSS)是...

    SAML v2.0 开发指南 SSO必备

    SAML(安全断言标记语言)v2.0是一种开放标准,用于实现Web浏览器中的单点登录(SSO)。SAML提供了一种机制,允许用户通过使用现有的身份验证凭证从一个地方安全地访问多个应用程序。这种方式可以改善用户体验并降低...

    SAML2.0 简介

    #### 安全断言标记语言 (SAML 2.0) 安全断言标记语言(Security Assertion Markup Language, SAML)是一种用于交换认证与授权数据的标准协议,特别是适用于跨域单点登录(Single Sign-On, SSO)场景。SAML 2.0 是该...

    SAML2.0简要介绍

    安全断言标记语言 标识化组织OASIS提出的用于安全互操作的标准 版本:1.0,1.1,2.0 主要内容 SAML断言:定义交互的数据格式 SAML协议:定义交互的消息格式 SAML绑定(binding):定义如何与常见的通信协议绑定 SAML...

    Learning SAML

    SAML(Security Assertion Markup Language,安全断言标记语言)是一种开放标准,用于在不同的信任域之间交换身份验证和授权数据。它在现代Web应用程序和企业级系统中扮演着至关重要的角色,尤其是在实现单点登录...

    单点登录saml

    翻译过来大概叫 安全断言(标记)语言。 这里有两个点: 第一是“安全”, 第二是“断言(assertion)”。 用人话翻译saml就是 用安全的方式表达断言一种语言。 先看它的核心概念“断言”。 断言是什么? 就是做出...

    基于SAML的单点登录系统的研究与实现

    SAML(Security Assertion Markup Language,安全断言标记语言)是一个基于XML的标准,用于在网络上进行安全信息交换。通过SAML,可以在不同系统间共享用户身份认证和授权数据,从而实现单点登录和单点登出功能。...

    SAML 协议译本

    ### SAML 2.0 安全断言标记语言详解 #### 一、SAML 2.0 概述 SAML(Security Assertion Markup Language)2.0 是一种基于 XML 的开放标准,用于在不同安全域之间交换认证与授权信息。这种标准允许身份提供者(IdP...

    saml SP实现

    SAML即安全断言标记语言,英文全称是Security Assertion Markup Language。它是一个基于XML的标准,用于在不同的安全域(security domain)之间交换认证和授权数据。在SAML标准定义了身份提供者(identity provider)和...

    OpenSAML 2.0 Developers Manual.rar

    OpenSAML是一个开源库,主要用于实现安全断言标记语言(SAML)的处理,这是一个用于身份验证和授权的标准。OpenSAML 2.0开发者手册是为那些希望深入理解和使用OpenSAML库进行SAML集成的开发人员准备的宝贵资源。 在...

    Laravel开发-laravel-multi-saml2

    SAML2 是一种标准的安全断言标记语言,用于在身份提供者和服务提供商之间交换认证和授权信息。通过 SAML2,用户可以在不同的应用程序之间无缝切换,无需重复输入用户名和密码,提高了用户体验和安全性。 ### 2. ...

    SAML Suite试用版:为SAML1.1和SAML2.0版本单点登陆到ASP.NET应用程序添加支持

    SAML Suite是一款.NET的安全断言标记语言SAML Suite是一款工具套包,该套包包含两大控件:SAML v1.1 Component和SAML v2.0 component。SAML Suite完全符合OASIS安全断言标记语言规范,且能从ASP.NET Web应用程序启用...

    SAML v1.1 Component试用版:为SAML 1.1版本单点登陆到ASP.NET应用程序添加支持

    SAML v1.1 Component是一款.NET的安全断言标记语言(SAML)1.1版本控件是一款工具包。它为SAML 1.1版本单点登陆到ASP.NET应用程序添加了支持。它同样为SAML断言的自定义运用而在网络服务应用程序中使用了SAML断言...

    saml-idp.zip

    SAML 2.0 是一种基于XML的安全断言标记语言,用于在不同的安全域之间传递认证和授权信息。它允许用户在一个系统(称为服务提供者,SP)上登录一次,然后在其他与之信任的系统(称为身份提供者,IDP)之间无缝地移动...

Global site tag (gtag.js) - Google Analytics