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是一种基于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 - 维基百科
- 大小: 83.3 KB
- 大小: 61.5 KB
- 大小: 83.9 KB
分享到:
相关推荐
1、什么是SAML 2、SAML标准&协议 3、SAML2.0特性分析 4、SAML:集中身份管理的秘诀 5、SAML:企业级的IdP 6、SAML:IdP和SP用户存储库 7、XML安全:使用SAML确保可移植的信任 8、揭开SAML的神秘面纱 9、安全地共享...
### SAML 2.0 简介及关键技术解析 #### 安全断言标记语言 (SAML 2.0) 安全断言标记语言(Security Assertion Markup Language, SAML)是一种用于交换认证与授权数据的标准协议,特别是适用于跨域单点登录(Single ...
SAML 2.0(Security Assertion Markup Language 2.0)是一种开放标准,用于在不同的安全域(通常是企业和服务提供商)之间交换身份验证和授权数据。这一规范被广泛应用于网络身份管理,特别是在单点登录(Single ...
**SAML2.0全称Security Assertion Markup Language 2.0,是一种基于XML的协议,用于在不同的安全域之间交换身份验证和授权数据。它在单点登录(Single Sign-On, SSO)场景中扮演了核心角色,允许用户通过一次登录...
SAML(Security Assertion Markup Language)是一种标准协议,用于在服务提供商和服务身份提供者之间交换安全信息,如身份验证和授权数据。在这个Java SAML客户端的示例中,我们重点讨论如何使用`org.opensaml`库来...
SAML(Security Assertion Markup Language)协议是一种用于身份验证和授权的标准,它允许Web应用程序在不同的安全域之间交换用户身份信息。在Java环境中,SAML的实现通常依赖于一系列的库,这些库打包成JAR文件供...
SAML(安全断言标记语言)v2.0是一种开放标准,用于实现Web浏览器中的单点登录(SSO)。SAML提供了一种机制,允许用户通过使用现有的身份验证凭证从一个地方安全地访问多个应用程序。这种方式可以改善用户体验并降低...
SAML(Security Assertion Markup Language)2.0是一个开放标准,用于在不同的安全域之间交换身份验证和授权数据。这个标准由OASIS(Organization for the Advancement of Structured Information Standards)组织...
SAML(Security Assertion Markup Language)2.0 是一种标准的基于XML的身份验证和授权协议,广泛应用于企业级单点登录(Single Sign-On, SSO)系统。这个文档“SAML2.0协议翻译.doc”提供了对SAML 2.0协议的中文...
SAML(Security Assertion Markup Language)是由OASIS组织制定的一种标准,主要目的是在不同系统和服务之间安全地交换用户的标识信息,实现单点登录(Single Sign-On, SSO)。在SAML出现之前,若要在诸如Websphere...
### SAML 2.0 Profiles概述 #### 一、引言 SAML(Security Assertion Markup Language)2.0是OASIS(Organization for the Advancement of Structured Information Standards)制定的一项标准,旨在提供一个框架来...
Python SAML库是用于在Python应用程序中实现Security Assertion Markup Language(SAML)身份验证的工具。SAML是一种标准,允许身份提供者(Identity Provider, IdP)和服务提供者(Service Provider, SP)之间交换...
SAML(Security Assertion Markup Language)是一种开放标准,用于在不同的安全域之间交换身份验证和授权数据。这个标准被广泛应用于单点登录(Single Sign-On, SSO)场景,允许用户在一个系统上登录后,无须再次...
### XACML v2简介 XACML则是一种基于策略的语言,用于定义访问控制策略。XACML v2提供了一种标准化的方法,使得应用程序可以基于复杂规则和条件做出授权决策。它能够处理诸如用户权限、资源属性和环境条件等多维度...
### SAML:安全断言标记语言详解 #### 一、SAML概述 SAML,全称为Security Assertion Markup Language,即安全断言标记语言,是一种基于XML的开放标准,旨在简化跨域的身份验证和授权流程。SAML最初由OASIS...
【SAML2.0基础理论】 SAML(Security Assertion Markup Language)2.0是一种开放标准,由标识化组织OASIS提出,旨在解决数字身份验证和单点登录(Single Sign-On, SSO)的问题。SAML2.0旨在提高Web服务的安全性和互...
**Laravel 开发与 SAML 整合** 在现代Web应用程序中,安全性是至关重要的,尤其是在企业级应用中。SAML(Security Assertion Markup Language)是一种标准,允许身份提供者(Identity Provider, IDP)和服务提供商...
spring-boot-security-saml, Spring Security saml与 Spring Boot的集成 spring-boot-security-saml这个项目在处理 spring-security-saml 和 Spring Boot 之间的平滑集成的同时,在处理内部的配置的gritty和锅炉板的...
《Redmine SAML 源码解析》 Redmine 是一款开源的项目管理软件,它提供了问题跟踪、项目管理和文档管理等功能。SAML(Security Assertion Markup Language)则是一种基于XML的安全标准,用于身份验证和授权。当将...
基于SAML 2.0 SSO单点登录,包括VS2005,VS2008,VS2010。有部分Java代码。含文档。 client发送saml请求---sso响应验证client是否可信任---可信响应saml----加密saml---发送到client---client解密成功--验证信息...