SAML断言的XML结构是什么 单点登录SSO
发布时间 - 2026-01-02 00:00:00 点击率:次SAML断言是SAML 2.0中嵌套在响应内的XML结构,含Issuer、Subject、Conditions等必需元素,承载AuthenticationStatement和AttributeStatement两类核心声明,并通过ID、IssueInstant、NotOnOrAfter等属性保障安全与时效。
SAML断言(SAML Assertion)是SAML协议中承载用户身份和授权信息的核心XML片段,用于在身份提供者(IdP)和服务提供者(SP)之间安全传递认证与属性数据。它不是完整的消息(如SAML请求或响应),而是嵌套在中的关键内容块。
基本结构:三个必需的顶级元素
SAML断言是一个元素,必须包含以下三个子元素(按顺序):
-
Issuer:标识断言签发方(通常是IdP的实体ID),格式为
;https://idp.example.com -
Signature(可选但强烈推荐):对断言整体进行XML签名,确保完整性与来源可信,位于
内; -
Subject:描述被认证的主体(即用户),含
(如邮箱、临时ID)及可选的(说明如何验证该主体,例如通过Bearer方式回传给SP)。
核心声明类型:AuthenticationStatement、AttributeStatement、AuthorizationDecisionStatement
断言主体由一个或多个“声明(Statement)”组成,最常用的是前两种:
-
AuthenticationStatement:证明用户已通过某种方式完成认证。含
AuthnInstant(认证时间)、SessionIndex(会话标识)、AuthnContext(认证强度,如密码、MFA); -
AttributeStatement:携带用户属性,如
email、displayName、groups等。每个属性用包裹,值放在中,支持多值和命名空间; - AuthorizationDecisionStatement(较少使用):表达对某资源的访问决策(允许/拒绝),实际SSO中通常由SP自行鉴权,IdP一般不提供。
关键属性与约束
断言本身带有多项元数据属性,直接影响安全性与有效性:
-
Version="2.0":必须为2.0,SAML 1.x已淘汰; -
ID:唯一标识符(以_开头的随机字符串),用于防重放; -
IssueInstant:UTC时间戳,表示断言生成时刻; -
Conditions:定义有效范围
,含NotBefore、NotOnOrAfter(建议不超过5–10分钟)、AudienceRestriction(明确指定接收方SP的实体ID,防止断言被滥用于其他服务)。
典型简化示例(仅保留主干)
以下是一个精简但合法的SAML断言片段(省略签名和命名空间声明):
ID="_abc123" IssueInstant="2025-05-20T08:30:00Z" Version="2.0">https://sp.example.com
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
asic">
user@example.com
# word
# session
# ai
# 邮箱
# asic
# String
# 命名空间
# format
# xml
# 标识符
# 字符串
# Attribute
# http
# https
# 是一个
# 可选
# 的是
# 放在
# 多个
# 两种
# 不超过
# 多项
# 较少
# 强烈推荐
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
微信小程序 scroll-view组件实现列表页实例代码
打造顶配客厅影院,这份100寸电视推荐名单请查收
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
JavaScript如何实现类型判断_typeof和instanceof有什么区别
浅谈Javascript中的Label语句
如何用JavaScript实现文本编辑器_光标和选区怎么处理
如何用IIS7快速搭建并优化网站站点?
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
Laravel storage目录权限问题_Laravel文件写入权限设置
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
如何基于云服务器快速搭建网站及云盘系统?
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
java ZXing生成二维码及条码实例分享
Laravel如何实现模型的全局作用域?(Global Scope示例)
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
EditPlus中的正则表达式 实战(4)
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
Linux后台任务运行方法_nohup与&使用技巧【技巧】
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
EditPlus中的正则表达式 实战(1)
中山网站制作网页,中山新生登记系统登记流程?
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Python函数文档自动校验_规范解析【教程】
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
免费网站制作appp,免费制作app哪个平台好?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
详解Huffman编码算法之Java实现
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
如何在企业微信快速生成手机电脑官网?
如何在建站主机中优化服务器配置?
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
电商网站制作价格怎么算,网上拍卖流程以及规则?
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
iOS中将个别页面强制横屏其他页面竖屏
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?


,含