第 1 章 使用 SAML v2 Deeper Dive 单点登录
JBoss EAP 安全架构指南 介绍了单点登录和 SAML 的基础知识。本节深入探讨 SAML v2 和 Single Sign-On 中涉及的组件。
1.1. 什么是 SAML v2? 复制链接链接已复制到粘贴板!
安全断言标记语言(即 SAML)是一种数据格式和协议,允许双方(通常是身份提供程序和服务提供商)交换身份验证和授权信息。此信息以 SAML 令牌的形式交换,包含断言,由身份提供程序发布到用于向服务提供商进行身份验证的主题。通过多个服务提供商使用和重用来自身份提供程序的 SAML 令牌的功能允许 SAML v2 帮助基于浏览器的单点登录。
1.1.1. 构建块 复制链接链接已复制到粘贴板!
对于 SAML,需要记住最重要的概念就是,它完全涉及到在实体之间传递安全断言。SAML 具有多个组件来完成此任务。
1.1.1.1. 实体 复制链接链接已复制到粘贴板!
实体是参与创建和传递断言的所有方。SAML 的概念有三种不同的实体:
- 主题
-
主体
也称为主体
,在大多数情况下,用户是用户,请求访问由 SAML保护的服务提供商
上的资源。 - 服务提供商
-
服务提供商
(或SP
)要求作为断言来证明该对象
的身份需要来自身份提供程序
。 - 身份供应商
-
身份提供商
或IDP
提供一组声明,格式为主题的
令牌,供服务提供商
用于身份验证和授权决策。
总之,主体
会获得发布的断言、身份提供程序发出
这些断言,服务提供商
使用这些断言来验证和授权 对象
。
1.1.1.2. 安全保证 复制链接链接已复制到粘贴板!
安全断言是身份提供程序就某一主题发布的一组声明。服务提供商使用这些断言对主题做出 access-control 决策。声明可采用以下形式:
- 身份验证
-
身份验证
断言声称对象在特定时间点上使用指定方法成功验证身份。也可以在身份验证语句中指定包含已验证对象的其他信息的身份验证上下文。 - 属性
-
属性
断言声称主题具有某些属性。 - 授权决策
-
授权决策
断言将对资源上的主题的授权请求做出响应或拒绝
。
示例
This user logged in as Sarah at 9:30 using a username and password. Sarah is a member of the Managers group. Sarah is accepted to access the Employee Information resource.
This user logged in as Sarah at 9:30 using a username and password. Sarah is a member of the Managers group. Sarah is accepted to access the Employee Information resource.
-
此用户声明
此用户使用用户名和密码在 9:30 中以 Sarah 身份登录,即验证
断言。
-
Sarah 是 Managers 组的成员,
是一个属性
断言。 -
Sarah 被接受以访问 Employee Information 资源
,这是授权决策
断言。
断言被打包为 SAML 令牌,并使用 SAML 协议传输。
1.1.1.3. 协议 复制链接链接已复制到粘贴板!
SAML 协议描述了如何打包断言(通常采用请求和响应的形式),以及正确处理它们的规则。这些规则必须跟随请求者和响应的生产者和消费者。请求可以请求特定、已知的断言或查询身份提供商进行身份验证、属性或授权决策。请求和响应消息(包括安全断言)采用 XML 格式,并遵循指定的架构。
1.1.1.4. 绑定 复制链接链接已复制到粘贴板!
SAML 绑定指定 SAML 协议如何映射到用于传输和消息传递的其他标准协议。一些示例包括:
- 映射到 HTTP 重定向的 SAML 绑定。
-
映射到 HTTP
POST
的 SAML 绑定。 - 将 SAML 请求/响应映射到 SOAP 请求和响应的 SAML 绑定。
1.1.1.5. profiles 复制链接链接已复制到粘贴板!
SAML 配置集使用断言、协议和绑定来支持特定用例,如 Web 浏览器单点登录、单点注销和 Assertion 查询。