SAML 基础






4.71/5 (6投票s)
在深入探讨SSO的实际实现之前,我们先来了解SAML的基础知识。
SAML
安全断言标记语言(SAML)是一个基于XML的框架,由结构化信息标准促进组织(OASIS)开发,用于在不同方之间交换安全信息。这是一个开放标准,可用于在不同产品之间交换安全信息。
历史
- SAML V1.0于2002年11月成为OASIS标准。SAML V1.1
- 于2003年9月发布,并取得了显著成功,在金融服务、高等教育、政府和其他行业领域获得了动力。
- # 2005年,SAML V2.0融合了SAML V1.1中有关联合身份的构建模块,并采纳了高等教育的Shibboleth倡议和Liberty联盟的身份联合框架的输入。
教育的Shibboleth倡议和Liberty联盟的身份联合框架。
SAML的优势包括:
- 平台中立性
SAML将安全框架从平台架构和特定供应商实现中抽象出来。使安全性更独立于应用程序逻辑是面向服务架构(SOA)的重要原则。
- 目录的松耦合
SAML不需要在目录之间维护和同步用户信息。
- 改善最终用户的在线体验
SAML通过允许用户在一个身份提供者处进行身份验证,然后无需额外身份验证即可访问服务提供者,从而实现单点登录。此外,SAML的身份联合(链接多个身份)可以为每个服务提供更好的定制化用户体验,同时促进隐私保护。
- 降低服务提供者的管理成本
使用SAML可以在多个服务中“重用”一次身份验证(例如使用用户名和密码登录)操作,从而降低维护账户信息的成本。这种负担
- 风险转移
SAML可以承担将身份正确管理责任转移给身份提供者的作用,而身份提供者通常比服务提供者更符合其业务模式。
SAML将在哪里使用?
Web单点登录
在Web SSO中,用户在一个网站上进行身份验证后,无需额外身份验证即可访问另一个网站上的一些个性化或定制化资源。SAML通过一个网站向另一个网站发送身份验证断言来实现Web SSO,后者如果信任该断言的来源,则可以选择让用户登录,如同他们直接进行了身份验证一样。
基于属性的授权
与Web SSO场景类似,基于属性的授权模型允许一个网站将关于主体的身份信息传递给另一个网站,以支持某个交易。但是,身份信息可以是主体的某些特征(例如B2B场景中一个人的角色),而不是、或除了,关于该人何时以及如何进行身份验证的信息。当个人特定的身份不重要、出于隐私原因不应共享、或者单独不足以满足需求时,基于属性的授权模型就变得很重要。
保护Web服务
SAML断言可以在SOAP消息中使用,以便在Web服务交互的参与者之间传递安全和身份信息。OASIS Web Services Security (WSS) TC发布的SAML Token Profile指定了如何在WS-Security框架中使用SAML断言来实现此目的。Liberty联盟的Identity Web Service Framework (ID-WSF)在此基础上构建,利用SAML断言实现安全且尊重隐私的Web服务访问。
断言
断言 是一个信息包,其中包含SAML授权机构发布的零个或多个声明。SAML定义了三种不同类型的断言声明,可以由SAML授权机构创建。
- 身份验证: 指定的主体在特定时间以特定方式进行了身份验证。这种类型的声明通常由一个名为身份提供者的SAML授权机构生成,该机构负责对用户进行身份验证并跟踪有关他们的其他信息。
- 属性: 指定的主体与提供的属性相关联。
- 授权决策/权益信息: 允许指定的主体访问指定资源的请求已被授予或拒绝。
协议
SAML定义了许多请求/响应协议,允许服务提供者
- 向SAML授权机构请求一个或多个断言(包括对所需断言的直接请求,以及查询符合特定标准的断言)
- 请求身份提供者对一个主体进行身份验证并返回相应的断言
- 请求注册一个名称标识符
- 请求终止一个标识符的使用
- 通过一个伪影检索请求的协议消息
- 请求一组相关会话的近乎同时的注销(“单点注销”)
- 请求名称标识符映射
绑定
SAML请求-响应消息交换到标准消息或通信协议的映射称为SAML协议绑定。例如,SAML SOAP绑定定义了如何在SOAP消息中传递SAML协议消息,而HTTP Redirect绑定定义了如何通过HTTP重定向传递协议消息。
配置文件
通常,SAML的配置文件定义了约束和/或扩展,以支持SAML在特定应用程序中的使用,目标是通过消除通用标准中不可避免的一些灵活性来增强互操作性。例如,Web浏览器SSO配置文件规定了SAML身份验证断言如何在身份提供者和服务提供者之间进行通信,以实现浏览器用户的单点登录。
Web SSO配置文件详细介绍了如何将SAML身份验证请求/响应协议与HTTP Redirect、HTTP POST、HTTP Artifact和SOAP绑定的不同组合结合使用。
另一种SAML配置文件是属性配置文件。SAML定义了一系列属性配置文件,为解释SAML属性断言中的属性提供特定规则。例如,X.500/LDAP配置文件描述了如何在SAML属性中承载X.500/LDAP属性。
在接下来的帖子中,我们将探讨SSO的实际实现以及如何使用SAML 2.0。
对您有帮助吗?请告知您的评论/问题。