在阅读本文前,需有一定的统一身份认证的知识,最好阅读或者使用过cas或者kerberos
1. 原理和协议
从结构上看,自定义协议包括SP、IDP Server和IDP Engine三部分(UA为浏览器)。其中IDP Server和IDP Engine独立部署,主要负责对用户进行认证,SP负责处理客户端受保护资源的访问请求,需要登录时,重定向到IDP Server。如下图所示:
图1. 协议图
前提:IDP Engine是可信的,SP首先向ID Engine注册(名称以及默认的callbackURL),生成sp编号,该编号代表该sp;票据分为三种:sp票据、UA票据和agent票据
协议交互流程如下:
- 1. UA访问SP,SP判断该用户是否已经登录,如果没有登录,SP产生认证请求;如果用户已经登录,直接响应结果
- 2. SP重定向到IDP Server,URL带有AuthnRequest参数,如果已经登录,跳转到4;如果没有登录,返回登录页面,进行认证操作
- 3. UA产生认证请求,URL带有CredentialsRequest参数。IDP Server接收到认证请求后,首先判断请求的合法性。然后判断该用户是否已经成功单点登录(从cookie去得UA票据,如果票据不存在,则认为该用户未登陆过)。如果用户登录过,则为使用UA票据为该sp申请sp票据和agent票据,根据请求信息查询到响应URL,将sp票据写在url参数并重定向到该url,如果未登录过,则跳转到4
- 4. IDP Server将CredentialsRequest请求参数包装成Credentials向IDP Engine发出认证请求(IDP Server需要向IDP Engine认证自己的身份),如果认证通过,则申请相应票据: sp票据、UA票据和agent票据以及响应的URL
- 5. 将UA票据写cookie
- 6. 将sp票据写在响应URL参数,重定向到响应URL
2. 安全性
- sp票据由IDP Engine用sp的密钥加密,只有sp能解密sp票据,保证了即使在网络传输过程被人截获也能保证用户信息的安全
- agent票据由IDP Engine用IDP Server的密钥加密,只有IDP Server能解密agent票据,agent票据保存在IDP Server中
- UA票据由IDP Engine进行非对称加密,用户的唯一标识,存在客户端
- 单点时IDP Server需要能够获取到该票据进行验证
3. 设计实现
2.1数据交互方式
通过URL传递数据。
2.2参数格式
2.2.1. AuthnRequest
内容 |
由SP属性集合、callbackURL组成 注:CallbackURL不是必须,可以使用IDP Engine注册的默认callbackURL
|
格式 |
Sp属性集合 Sp编号:sp 元素之间以“;”分隔,key与value之间用“:”分隔 比如:sp:12345;authnReqID:abc123;sign:signValue callbackURL:service 请求格式组成 req=请求属性格式&service=callbackURL
|
编码 |
Base64,在网络以Base64编码传输 |
内容 |
由请求属性集合,签名组成 |
格式 |
l 请求的属性主要有: 1、身份(由用户名和域组成,格式: 用户名@域): principal 2、当前时间:time 3、票据类型:type 4、随机数标识:nonce 5、IDP Server代理:agent 6、引用: reference 7、sp编号:sp 格式:time:x;type:x;principal:x;nonce:x;agent:x;reference:x;sp:x 元素之间以“;”分隔,key与value之间用“:”分隔 l 签名,对请求属性用私有密钥加密生成密文,格式: sign=加密算法:密文 私有密钥由用户名、域和密码 md5而成,格式 域 + ":" + 用户 + ":" + 密码
请求格式组成 req=请求属性格式&sign=签名&service=xxxx |
编码 |
Base64,在网络以Base64编码传输 |
上述自定义协议其实并不完全安全,你知道问题在哪么?
相关推荐
2. **样式与样式表**:可以自定义样式,如字体、颜色、边框等,也可以引用外部CSS样式表,实现报表的统一风格。 3. **子报表与分组**:子报表用于嵌套报表,分组则能按指定字段对数据进行分组展示,方便数据分析。 4...
这部分定义了卡片与读卡器之间的数据通信方式,包括T=0和T=1两种协议,它们定义了数据传输速率、错误检测和恢复机制。 ISO7816-3涉及到卡片的操作规程和命令集,包括卡片的初始化、选择应用、数据交换等操作。这...
1. **目录服务概念**:LDAP是一种基于X.500标准的轻量级目录协议,用于提供快速查询和管理分布式目录信息。它以树形结构存储数据,便于查找和管理。 2. **LDAP架构**:主要包括三个主要组件——服务器(Directory ...
1. 统一系统设置界面:所有系统参数设置在一个界面完成,包括客房设置、参数设置、常用选项、备注列表、房态颜色定义、会员与协议客户、仓库和商品管理等,提高了工作效率。 2. 个性化房态展示:系统允许自定义房态...
1、价格相对便宜,软件熟悉快,项目实施时间短,系统稳定维护少。 2、系统采用标准Windows图形界面,界面风格用户可以根据自己的爱好进行设置。整套系统风格统一,界面整洁美观,设计思路清晰、学习培训简单,操作...
1、价格相对便宜,软件熟悉快,项目实施时间短,系统稳定维护少。 2、系统采用标准Windows图形界面,界面风格用户可以根据自己的爱好进行设置。整套系统风格统一,界面整洁美观,设计思路清晰、学习培训简单,操作...
房屋的具体地址和房间编号需要与公安系统登记的地址一致,以保证信息的统一性和准确性。 系统具备灵活的钥匙管理功能,支持延期、挂失、解挂、退卡/注销等操作。当钥匙被注销时,系统会发出警示信息,防止未授权的...
1. 采访管理子系统:该子系统负责图书的采购过程,包括零星订购和批量采购。零星订购支持单独编辑订单,查询和修改订购数据,并具备基于Z39.50协议的检索功能,以确保图书信息的准确性。批订购则允许对同一征订目录...
1. **识别硬件协议**:首先需要确定每种硬件设备所使用的通信协议,这可能包括TCP/IP、RS-485、CAN总线等。 2. **编写适配器程序**:根据不同的协议,编写相应的适配器程序,这些程序能够将硬件设备的数据转换成...
5. **URL**:URL(统一资源定位符)是网页或网络资源的地址,包含协议、主机名、路径等部分。一个基本的URL正则表达式可能会很长,但通常会包括`http(s)://`、域名、路径和可能的查询参数。 6. **身份证号**:中国...
1. **基本信息**:包括员工的姓名、性别、出生日期、身份证号等个人信息,以及应聘职位、入职日期等与工作相关的具体信息。这部分旨在确保信息的准确无误。 2. **工作条款**:描述员工的工作职责、工作时间、工资...
1. **Excel表格模板**: - Excel是一种强大的电子表格工具,适用于数据管理和分析。在员工到职流程中,Excel模板通常包括以下部分: - 基本信息:员工的姓名、性别、出生日期、身份证号、联系方式、家庭住址等。 ...
SDK的主要特点是提供了一个统一的接口,使得开发者可以在不同浏览器环境中使用高拍仪设备的功能。 **主要功能:** 1. **设备选择**:SDK允许用户在多个高拍仪设备之间进行选择。 2. **设备预览**:支持预览设备...
PC/SC接口是个人计算机与智能卡通信的一种国际标准,它定义了操作系统与智能卡读写器之间的通信协议,确保不同厂商的产品可以相互兼容。OCF组件实现了这一接口,为开发者提供了一个统一的、跨平台的访问层,使得开发...
顶级代理商拥有更大的市场拓展优势和最优惠的折扣,而初级代理商则可以根据自身情况获得自定义折扣。这种分级制度既鼓励了代理商的销售积极性,又保证了代理商之间的公平竞争。 此外,KC公司要求所有代理商必须提交...
1、客户列表:记录客户的基本信息,包括客户姓名、性别及身份证等,建立客户档案,并可完成对其发卡操作; 2、客户分类:根据客户所属类别对客户进行分类,并可组合查询客户信息;通过增加、修改或删除等操作对客户...
1、改善“网页_访问”、“网页_访问_对象”命令,添加默认协议头“Referer” 2、修复校正API正确申明后,“类_内存”不能使用的BUG。 3、改善“普通填表->单选框_取状态”参数2加入可空标志。 4、改善“字节集_还原...
实例002 统一窗体中控件的字体设置 实例003 设置程序代码行号 实例004 通过“格式”菜单布局窗体 实例005 为项目添加dll文件引用 实例006 为项目添加已有类 实例007 为项目添加第三方控件 实例008 为项目添加已有...