同时,说明书也发挥与策划和设计人员更好地沟通的作用。
一位用户,如果要以会员的身份访问网站,需要在每个网站上注册,并且通过身份验证后,才能以会员的身份访问网
站;即使用户以同样的用户名与密码在每个网站上注册时,虽然可以在避免用户名与密码的忘记和混淆方面有一定的
作用,但是用户在某一段时间访问多个成员站点或在成员站点间跳转时,还是需要用户登录后,才能以会员的身份访
问网站。这样不仅给用户带来了不便,而且成员网站为登录付出了性能的代价;
性。通过这种有机结合,能更好地体现公司大平台,大渠道的理念。同时,这样做也利于成员网站的相互促进与相互
宣传。
在各个成员网站间共用。单点登录系统,包括认证服务器(称Passport服务器),成员网站服务器。
该会员在一定的时间内,访问任何成员网站都不需要再次登录。
过期日期时间和用户其它数据。
第二阶段,整合各个成员网站已有会员到单点登录系统中。
要注意第二阶段的开发,做到统筹考虑。
好,措词简单明了。用户不用学习,就能使用该系统。
的数据库上创建与Passport服务器数据库中会员的映射关系。
问其它任何的网站时,都不需要再次登录。
cookie中,不能采用向每个成员网站所在的域中写cookie,防止响应时间太长,给会员带来不友好的浏览体验。 同
时,把下发给会员的cookie票保存到Passport服务器的数据库中,方便验证方式和会员行为统计的扩展。
录的状态。
Passport服务器通信验证会员的身份。
服务器通信验证会员的票。但是,这次验证不要Passport服务器与数据库中保存的验证票进行比较验证,只需要验证
Passport服务器域中的cookie验证票据有效即可。
SSO 系统包括注册、登录、登出、密码修改、密码找回、成员网站间跳转与用户管理模块。本说明书使用HIPO图描述
系统机构和模块内部处理功能,它主要包括层次结构图和IPO图两个部分。层次结构图描述了整个系统的结构以及各个
模块之间的关系;IPO图则描述了在某个特定模块内部的输入(I)、处理过程(P)、输出(O)思想。
A、系统结构图
图1 SSO系统结构图
图2系统层次结构图
模块名称:会员注册
|
使用者:
Passport
服务器与各成员网站
| ||
输入部分
I
|
处理描述
P
|
输出部分
O
| |
1.
重定向到
Passport
服务器,带
有返回
URL
和成员网站
ID
2.
输入信息:邮箱、密码、区域(暂时没有使用验证码)。
3 3.
提交注册信息,发出注册请求。
4.
注册用户从邮件中获得验证码,利用验证号激活用户,此时用户将成为合法会员。
5.
会员个性信息(在成员网站填写)
|
1.
邮箱是否可用的实时检查,及时提示邮箱是否可用(这里的可用仅仅是表示符合邮箱的规范,并且该邮箱没有被注册,不表示真正的可用)。
2.
密码安全级别实时提示。根据字符长度、含有字符的种类,计算安全级别,并实时提示用户。安全级别分为
:
太短,差,良,优四个等级。
3.
根据区域数据库,获得区域信息下拉框,结合会员区域
IP
,实现区域自动筛选,在允许的误差范围内不需手动选择区域。
4.
建立新会员
(1)
验证会员提交的注册信息,若合法,把用于激活帐号的验证码发送到会员测试使用的邮箱中。
(2)
会员使用验证码激活帐号,若激活成功,保存会员信息和会员验证票到数据库
(Passport
服务器数据库
),
并且验证票也保存到
cookie
中。同时调用成员网站的
Web Service
接口,把刚才产生的
Passid
保存到成员网站数据库中(建立映射关系)。
(3)
重定向到成员网站。
(4)
成员网站接收数据,提示会员填写个性信息,并提交到成员网站服务器。
(5)
保存个性信息与接收的会员验证信息到成员网站数据库与
cookie
中,同时在
Session
中保存会员已验证的状态信息。
(5)导航会员到某个页面。
|
1.
Passort
服务器保存新会员信息和会员验证票到数据库中。
2.
成员网站
Web Service
,在成员网站数据库中添加会员信息,利用
Passid
建立与
Passport
服务器上会员的映射关系,并返回操作成功或失败状态信息。
3.
修改成员网站数据库中会员的个性信息。
4.
保存会员验证票到
cookie
中,同时保存会员通过验证的状态到
Session
中。
|
模块名称:会员登录
|
使用者:
Passport
服务器与各成员网站
| ||
输入部分
I
|
处理描述
P
|
输出部分
O
| |
1.
会员第一次登录时输入
Email
和密码。
2.
提交会员信息到
Passport
服务
器。
说明:加载登录框之前,成员网
站会首先与
Passport
服务器通信,
获得会员是否已经登录过,根据
状态加载登录框。
|
1.
在成员网站
A
含有登录框页面的
<head>
区,利用
<script src=meber_auth.aspx>
在页头嵌入
.aspx
文件(成员网站上的文件)。
a.
页面首先查看
Session
中的状态变量,如果状态变量为
NULL,
则查看
cookie
中的状态变量。
b.
根据
Session
与
Cookie
中状态变量的情况,实现与
Passport
服务器上的
Web Service
通信,确定会员是否已经登录。
2.
根据会员登录与否,加载登录框。
3.
如果没有登录,显示会员输入
Email
和密码的登录框。
4.
会员提交信息到
Passport
服务器上的
Web Service ,
通过验证后生成
cookie
票,并返回登录状态值和
cookie
票到成员网站。
成员网站保存登录状态变量与
cookie
票。
说明:会员通过任何一个成员网站登录成功后,表示已经登录了所有的成员网站。
|
1.
根据登录状态加载登录框
2.
在
Passport
服务器上创建会员
验证票,保存到数据库与
cookie
中
3.Passport Web Service
返回登录
状态值与
cookie
验证票到成员网站。
4.
保存会员验证票到
cookie
中,同时保存会员通过验证的状态到
Session
中。
|
模块名称:会员登出
|
使用者:
Passport
服务器与各成员网站
| ||
输入部分
I
|
处理描述
P
|
输出部分
O
| |
1.
成员网站重定向到
Passport
服务器的登出页面,并带有返回
URL,
成员网站
ID
和验证票。
|
1.
在成员网站
A
重定向到
Passport
服务器,
Passport
接收
cookie
验证票
,
并验证是否合法。
2.Passport
修改数据库中验证票使之失效,清除
cookie
中的验证票。
3.
重定向到成员网站,清除
cookie
中的验证票和
Session
中登录状态变量。
4.
导航会员到某个页面。
|
1.
修改数据库中的验证票使之失效,并清除
cookie
。
2.
重定向到成员网站。
|
模块名称:修改密码
|
使用者:
Passport
服务器与各成员网站
| ||
输入部分
I
|
处理描述
P
|
输出部分
O
| |
1.
成员网站重定向到
Passport
服务器修改密码页面,并带有返回
URL,
验证
cookie
票。
2.
会员输入原密码和新密码。
3.
提交数据。
|
1.
在成员网站
A
重定向到
Passport
服务器,
Passport
接收
cookie
验证票
,
并验证是否合法。
2.Passport
修改会员密码。
3.
重定向到成员网站,并带有修改成功与否的状态变量。
4.
导航会员到某个页面。
|
1.
修改数据库中会员的密码。
2.
重定向到成员网站。
|
模块名称:找回密码
|
使用者:
Passport
服务器与各成员网站
| ||
输入部分
I
|
处理描述
P
|
输出部分
O
| |
1.
成员网站重定向到
Passport
服务器找回密码页面,并带有验证
cookie
票。
2.
会员输入
Email
地址
3.
提交数据
4.
激活新密码
(
邮箱将收到一个激活密码的
URL)
|
1.
在成员网站
A
重定向到
Passport
服务器,
Passport
接收
cookie
验证票
,
并验证是否合法。
2.Passport
为会员生成新密码,并向会员邮箱中发送一个激活密码的
URL
。
3.
激活新密码
4.
使用新的密码登录
|
1.
为会员生成新密码,但未激活。
2.
提示会员收邮件激活新密码,激活后方可使用。
|
模块名称:成员网站间跳转
|
使用者:
Passport
服务器与各成员网站
| ||
输入部分
I
|
处理描述
P
|
输出部分
O
| |
成员网站
A
链接到其它成员网站
B
,之后处理同会员登录模块。
|
模块名称:票据加解密及验证
|
使用者:
Passport
服务器
| ||
输入部分
I
|
处理描述
P
|
输出部分
O
| |
1.
会员
Passid
、票据发布时间、票据有效时间、会员其它信息数据。
2.
调用
Web Service
方法验证
a.
传入
Email
和密码
b.
传入
cookie
验证票
|
1.
接收成员网站请求数据
(Email
与密码
)
。
2.
由会员
Passid
、票据发布时间、票据有效时间、会员其它信息数据生成加密的
cookie
验证票,并且保存到数据库和
cookie
中。
3.
接收
cookie
验证票,解密并验证,返回给成员网站登录状态值。
|
1.
生成加密的
cookie
票。
2.
返回会员登录状态值。
|
解释各输入输出数据的类型,并逐项对格式、数值范围、精度等作出准确定义。对软件的数据输出及必须标明的控制输出量进行解释并举例,包括对硬拷贝报告(正常结果输出、状态输出及异常输出)以及图形或显示报告的描述。
3.4 流程逻辑
3.4.1
注册流程图
3.4.2
会员登录流程图
3.4.3
会员登出流程图
流程图使用Visio制作,浏览不方便。特别生产了HTML格式的文档,请从这里下载http://files.cnblogs.com/david-weihw/passport.rar,到本地查看。
休息一下进广告:
3.4.4 会员修改密码流程图
3.4.5 会员找回密码流程图
3.4.6 成员网站间跳转流程
假设从成员网站A跳转到成员网站B,网站A提供网站B的入口链接即可。导航到网站B后,其流程与会员登录流程一样。
3.5对性能的规定
3.5.1 精度
3.5.2 灵活性
设计时需要充分考虑功能的扩展,使功能模块具有很强的灵活性。
灵活性因素:
a.操作方式上的变化;
b.运行环境的变化;
c.同其他软件的接口或其他软件对该模块的集成;
d.精度和有效时限的变化;
e.计划的变化或改进。
3.6 数据管理
3.6.1 数据管理能力要求
说明需要管理的文卷和记录的个数、表和文卷的大小规模,要按可预见的增长对数据及其分量的存储要求做出估算。比如,在数据库中设计中会员ID时,若采用自增型变量要估算会员的数量级,确定采用(int)数据类型,还(bigint)数据类型。
3.6.2 数据库设计(Passport服务器)
1).Pass_Member(会员表)
字段名称 | 数据类型 | 说明 | 备注 |
mPassID | Bigint | 会员ID号 | 自增型,PK(主键) |
mName | Nvarchar(64) | 会员名 | Email作为会员名(创建索引) |
mPwd | Nvarchar(32) | 会员密码 | 数据库中保存MD5运算的结果 |
mGBPwd | Nvarchar(32) | 会员找回密码 | 会员找回密码时,生成的密码,会员激活后覆盖会员密码 |
mWake | Tinyint | 会员唤醒 | 当和成员网站建立映射关系后,唤醒该会员 |
mMapWebsite | Nvarchar(128) | 会员映射的成员站点 | 建立会员映射关系的成员网站串 |
mRegDT | Datetime | 会员注册时间 |
|
mAreaCode | Nvarchar(8) | 区域代号 |
|
mBack | Nvarchar(64) | 预留字段 | 预留扩展 |
注意:成员网站的会员表,需要通过mPassID字段建立与Pass_Member表中会员的映射关系。
备注: 60-11-20 添加两个字段(红色高亮)
2).Member_WebSite(成员网站表)
字段名称 | 数据类型 | 说明 | 备注 |
mWebID | int | 成员网站ID编号 | PK(主键) |
mWebName | Nvarchar(32) | 成员网站名称 |
|
mWebURL | Nvarchar(32) | 成员网站URL |
|
mWebIP | Nvarchar(16) | 成员网站IP |
|
mWebManager | Nvarchar(16) | 成员网站管理员 | 成员网站故障时,便于维护 |
mWMTel | Nvarchar(16) | 成员管理员电话 |
|
mBack | Nvarchar(64) | 预留字段 | 预留扩展 |
3).Member_Ticket(会员票据表)
字段名称 | 数据类型 | 说明 | 备注 |
mTicketID | Nvarchar(240) | 验证票编码 | PK(主键) |
mPassID | Bigint | 会员ID号 | FK(关联Pass_Member表mPassID) |
issueDT | Datetime | 票签发日期时间 |
|
availDT | datetime | 票有效日期时间 |
|
digitalSign | Nvarchar(32) | 票的数字签名 | 用于保证票的安全 |
mBack | Nvarchar(64) | 预留字段 | 预留扩展 |
4).Member_SignRecord(会员登录记录表)
字段名称 | 数据类型 | 说明 | 备注 |
ID | Bigint | 记录ID号 | PK(主键) |
mPassID | Bigint | 会员ID号 | FK(关联Pass_Member表mPassID) |
signinDT | Datetime | 登录日期时间 |
|
signinWebID | int | 登录网站ID编号 | FK(关联Member_WebSite表) |
signoutDT | Datetime | 登出日期时间 |
|
signoutWebID | int | 登出网站ID编号 | FK(关联Member_WebSite表) |
mBack | Nvarchar(64) | 预留字段 | 预留扩展 |
3.6.3 数据处理
创建作业
1、定时把验证票的记录导入的备份表中,供统计分析使用。
2、定时把一天以上没有激活的会员删除
3.7 Passport服务器与成员网站接口规范
3.7.1 P assport服务器入口及调用接口
a.注册入口
重定向规范:
成员网站注册重定向地址:http://passport.david.cn/register.aspx
成员网站入口参数:AppID 成员网站ID号
Redirect Passport重定向地址
Passport回传参数: Ticket cookie验证票加密串
PassID 会员ID号
UserName 会员名称(Email)
举例:
假设AppID=1;Redirect=http://www.woall.com/index.aspx
Ticket= 53D2FD484DC6FAD75E82; UserName=david@gmail.com
PassID=1234
则 成员网站重定向地址为:
http://passport.david.cn/register.aspx?AppID=1&Redirect=http://www.woall.com/register.aspx
Passport重定向地址为:
http://www.woall.com/index.aspx?Ticket=53D2FD484DC6FAD75E82&PassID=1234&UserName=david@gmail.com
Web Service通信规范:
若用户从成员网站A重定向到Passport服务器注册会员时,Passport调用成员网站Web Service接口,建立Passport数据库与网站A数据库中会员的关联,关联字段为Pass_Member表中的mPassID。
Web Service名称: pass_user_related
所有者:成员网站
调用者:Passport服务器
输入参数:PassID:字符串,表示会员ID号
输出参数:Flag:布尔型,表示是否成功建立关联
b.登录接口
验证cookie票Web Service规范:成员网站本地域存在cookie验证票时,使用的接口。
Web Service名称:web_ticket_auth
所有者:Passport服务器
调用者:成员网站
输入参数:TicketCode 字符串 验证票字符串
AppID 字符串 成员网站ID
输出参数:Flag:布尔型,表示验证票是否合法
验证逻辑:只要数据库中存在该验证票,且在有效期内,即合法。
HTTP[本接口改为了重定向的方式,请参考下面的部分] 请求通信接口规范:成员网站域不存在cookie验证票,查看Passport域是否存在。
Passpport提供的URL:http://passport.david.cn/pass_ticket_exist.aspx
输入参数:无
输出参数:XML格式的文本(符合RSS2.0标准),XML包含节点
Flag:表示是否存在合法的验证票
Ticket:表示验证票字符串
PassID:表示会员ID号
UserName:表示Email地址
备注:Http请求,从成员网站域,向Passport域发送请求时,并不能访问到在Passport域中向客户端写的cookie值。现改成重定向的方式
重定向接口规范:
Passport提供的重定向地址:http://passport.david.cn/pass_ticket_exist.aspx
输入参数:Redirect 字符串 Passport重定向到成员网站的地址
AppID 字符串 成员网站ID号
回传参数:Ticket 字符串 验证票编号
PassID 字符串 会员ID号
UserName 字符串 会员名称
举例:
假设: Redirect= http://www.woall.com/Public/Login_State.aspx
AppID=1
Ticket=53D2FD484DC6FAD75E82
PassID=1234
UserName= david@gmail.com
则:则 成员网站重定向地址为:
http://passport.david.cn/pass_ticket_exist.aspx?AppID=1&Redirect=http://www.woall.com/Public/Login_State.aspx
Passport重定向地址为:
http://www.woall.com/Public/Login_State.aspx? Ticket=53D2FD484DC6FAD75E82&PassID=1234&UserName=david@gmail.com
登录框提交接口规范:成员网站输入Email和密码提交到Passport的地址。
提交到Passport的地址:http://passport.david.cn/pass_login.aspx
成员网站入口参数:Email 会员名
Pwd 会员密码
AppID 成员网站ID
Redirect Passport重定向地址
Passport回传参数: Ticket 字符串,cookie验证票加密串
PassID 字符串,会员ID号
UserName 字符串,会员名称(Email)
Flag 登录成功与否标识 2-成功(会员存在)3-失败(会员名不存在)4-密码不正确,5-数据库错误
举例:
假设:Passport重定向地址为http://www.woall.com/default.aspx
则,Passport服务器重定向到成员网站的地址是
http://www.woall.com/default.aspx?Ticket=53D2FD484DC6FAD75E82&PassID=1234&UserName=david@gmail.com&Flag=1
c.登出接口
重定向规范:
成员网站登出重定向地址:http://passport.david.cn/Public/logout.aspx
成员网站入口参数:AppID 字符串,成员网站ID号
Ticket 字符串,cookie验证票
Redirect 字符串,Passport重定向地址
Passport回传参数: Flag 字符串,1-表示成功从Passport登出;0-票不合法;-1-失败(数据库错误)
举例:
假设AppID=1;Redirect=http://www.woall.com/index.aspx
Ticket= 53D2FD484D
Flag=1
则,成员网站重定向到Passport的地址为
http://passport.david.cn/Public/logout.aspx?AppID=1&Ticket=53D2FD484D&Redirect=http://www.woall.com/index.aspx
Passport服务器重定向到成员网站的地址为:
http://www.woall.com/index.aspx?Flag=1
d.修改密码接口
重定向规范:
成员网站修改密码重定向地址:http://passport.david.cn/Public/pwd_mod.aspx
成员网站入口参数:AppID 字符串,成员网站ID号
Ticket 字符串,cookie验证票
Redirect 字符串,Passport重定向地址
Passport回传参数: Flag 字符串,1-成功;0-验证票不合法;-1-数据库错误
举例:
假设AppID=1;Redirect=http://www.woall.com/index.aspx
Ticket= 53D2FD484D
Flag=1
则,成员网站重定向到Passport的地址为
http://passport.david.cn/Public/pwd_mod.aspx?AppID=1&Ticket=53D2FD484D&Redirect=http://www.woall.com/index.aspx
Passport服务器重定向到成员网站的地址为:
http://www.woall.com/index.aspx?Flag=1
e.找回密码接口
重定向规范:
成员网站找回密码重定向地址:http://passport.david.cn/Public/getback_pwd.aspx
成员网站入口参数:AppID 字符串,成员网站ID号
Ticket 字符串,cookie验证票
Passport回传参数: Passport服务器发送密码激活地址(其中有验证票字符串)到会员邮箱,供激活密码。
激活地址:
http://passport.david.cn/pwd_awake.aspx?Ticket=53D2FD484D
举例:
假设AppID=1;Ticket= 53D2FD484D
则,成员网站重定向到Passport的地址为
http://passport.david.cn/getback_pwd.aspx?AppID=1&Ticket=53D2FD484D
3.8故障处理要求
列出可能的软件、硬件故障以及对各项性能而言所产生的后果和对故障处理的要求。
3.9其他专门要求
如用户单位对安全保密的要求,对使用方便的要求,对可维护性、可补充性、易读性、可靠性、运行环境可转换性的特殊要求等。
4、运行环境规定
4.1设备
列出运行该软件所需要的硬设备。
说明其中的新型设备及其专门功能,包括:
a.处理器型号及内存容量;
b.外存容量、联机或脱机,设备的型号及数量;
c.输入及输出设备的型号和数量,联机或脱机;
d.数据通信设备的型号和数量;
e. 功能键及其他专用硬件
4.2支持软件
暂时不采用第三方插件或其它软件。
4.3控制
说明控制该软件的运行的方法和控制信号,并说明这些控制信号的来源。
按照系统的说明书,本人已经实现了该系统,并且实施过程的修改都作了说明。
平台环境:
1、win2003, IIS6.0, MS SQL 2000,VS.NET C# 1.1
2、wind2003,Apache2.2.4, MySql5.0, PHP5.1
重点:
验证票的生成,在各个网站所在的域中共享验证票,验证票的安全(3DES,数字签名,验证票时间戳)