断言是安全断言标记语言(SAML 2.0)最强大的功能之一,使中小企业能够采用单点登录(SSO),平衡了用户体验的便捷性和对 Web 应用的精细化用户权限控制。这些对于具有严格数据安全监管要求的行业都至关重要。本文将介绍断言的基本概念、运行原理、应用方法,以及断言中包含的特定语句。



1. 什么是 SAML 断言?

SAML 断言是身份提供程序(IdP)和服务提供程序(SP)之间交换的消息,可以秘密识别用户身份、存在哪些相关信息以及授权访问内容。这些信息既充当了安全条件(如断言的来源),也保证了断言的有效性。断言的编写要用到 XML 模式,该模式提供了画布来明确具体条件,这些条件在 SAML 请求验证成功后会经通信发送,而 SAML 的响应会代替网络共享的用户名和密码发出。



2. XML 文档

断言以 XML 文档的形式进行记录,并在 IdP 和 SP 之间进行标准化通信传输。XML 文档的构成包含针对断言和协议的模式。


断言的编写是一项需要测试和质量保证的编码活动。为此,企业应在单点登录系统的全生命周期维护断言的构成模式。不支持自定义开发的企业可以使用预构建的连接器。



3. SAML 断言语句的类型

断言中的语句可以被分解为特定函数。SAML 2.0 开放标准规定了三种类型的语句:


  • 认证语句
  • 属性语句
  • 授权决策语句


这些语句都封装在 SAML 断言中,为身份和访问管理(IAM)的上线和治理提供了极大的灵活性。下面是三种语句的具体说明。


1)认证语句

认证语句由用户认证系统生成,包含身份验证决策产生的相关信息以及时间戳等日志信息。


2)属性语句

SAML 能传递有关用户的信息,包括所属部门、是否属于具有访问特权的的“VIP”组,以及邮箱等基本联系信息。属性语句可以在自定义应用中创建,并映射回预定义的值。


3)授权决策语句

授权决策语句提供用户的操作权限等详细信息,这里的操作权限包括访问特定网页或应用安全区。举例来说,企业应限制员工隐私信息的访问权限。这也使 SAML 协议独有的功能,OIDC 等其他身份验证协议都不支持这一功能。



4. 如何使用断言语句?

断言包含一个或多个不同类型的语句,具体取决于配置目的是只有身份验证还是验证加授权。此外也会有用户定义的语句。断言语句允许系统进行跨域的交互操作,支持为网站创建单点登录 SSO 和基于属性的用户身份认证等服务,并通过在简单对象访问协议(SOAP)消息中共享安全信息来保护 Web 服务。