您的位置:首页 > 运维架构 > 网站架构

USB KEY身份认证管理系统及网站访问控制方案(二)

2011-03-18 13:04 363 查看


搜索标签:Usb身份认证,Ukey身份认证,Usb Key身份认证。


2 USB KEY身份认证管理系统开发与实现

2.1 基本原理

在网页上要实现基于硬件对用户进行身份认证,就必然需要网页能够访问硬件内所存储的数据。但是网页有基本的安全模型,“沙盒”(SandBox),目的就在限制网页对本地资源的访问能力,这两者实际上是矛盾的。Microsoft推出的ActiveX能够解决开发人员在实际开发中遇到的这个问题,但是ActiveX过于强大,事实上几乎无所不能。IE的做法是使用签名验证,然后提示用户认清控件来源,把选择权交给用户。这样就在用户端需要进行若干安全设置,部署这类系统在用户那里常常造成困扰,用户不知道怎么样去做设置,只能求助于技术支持人员,形成大量的售后支持需求。
USB KEY身份认证管理系统不使用ActiveX。其要点在于在用户终端运行一个具备本地资源访问权限的可执行程序,该程序负责:
1 与网页进行交互,获取网页对硬件的读写操作要求;
2 与硬件进行交互,执行读写硬件数据的操作;
USB KEY身份认证管理系统与硬件如何进行交互:
容易理解,就是利用硬件的API进行读写。
USB KEY身份认证管理系统与网页进行交互:
USB KEY身份认证管理系统利用预先定义的网页元素,来实现与网页的交互,比如网页里面有个Edit控件元素<INPUT type=hidden id=IID_SecureWeb_I_SerialNumber value="" length=20>,其ID为IID_SecureWeb_I_SerialNumber,当硬件插入时USB KEY身份认证管理系统就会自动读出硬件的ID序列号,并将该控件的value属性赋值为序列号数据,这样网页就获知了当前插入的硬件的ID序列号,这样实现了USB KEY身份认证管理系统与网页的交互;再例如,网页里面有个Edit控件元素<INPUT type=button id=IID_SecureWeb_I_Signin value="登录">,其ID为IID_SecureWeb_I_Signin,当终端用户按下此按钮,USB KEY身份认证管理系统就知道用户选择了登录操作,就执行登录过程所需要的运算并将运算结果传送给网页。

2.2 开发前准备

1 数据库
需要给数据库里面的用户表增加两个域:SerialNumber (建议变长字符串类型,长度32,可以为空),SaltValue(建议变长字符串类型,长度32,可以为空)(这个数据表域名可以自行确定)。当然您还可以增加别的以便更好的管理,比如,绑定UKey的时间(或者说是UKey的发行时间)等等。域名可以自行设定,不一定是按照这里说的做。(约束您开发的实际上只有那些页面元素的ID,其他都不作限定)。
2 页面语言
您可以选择ASP、ASP.NET、JSP、PHP,这些无关紧要。实际上,如果您完全理解了USB KEY身份认证管理系统方案的原理,就会明白,任何页面程序开发语言其实都可以使用。只不过上述的几种我们提供了一个基本可以使用的示例代码。您可以在示例代码文件包里面找到相应的目录,然后解压出来即可。下面讲解中我们主要以ASP代码为例。
3 理解基本架构
利用USB KEY身份认证管理系统方案实现网站用户身份认证,需要实现两个功能模块:UKey的发行|管理模块(包括发行、修改、删除、回收等等功能),终端用户的认证模块。按照一般的说法,前者面向网站运营维护人员,属于网站后台,后者面向网站用户,始于网站前台。

4 理解基本概念
UKey硬件序列号
每个UKey硬件都有一个唯一的硬件序列号,由16位数字组成。
登录入口
一个登录入口由一个名称和一个URL两项信息组成。登录入口在USB KEY身份认证管理系统相关文档里面称为“应用”。登录入口的名称(“应用名”)必须是唯一的,能够与其他登录入口相区别。URL有两个作用,一是在终端插入UKey时,需要弹出登录入口时,会主动弹出的网址;二是URL的域名部分会用于检查,使该应用对应的用户在同一域名下不同的URL也可以进行认证。一个网站可以包含多个登录入口,一个登录入口在同一个网站下(以域名为准)可以有多个登录网址。每个UKey针对一个登录入口只能创建一个账户。如果一个UKey用户需要登录多个网站,就要设置多个登录入口,并在每个用户UKey内为每个登录入口创建一个账户。
用户账户信息
用户账户信息由三部分组成:账户名称、认证种子数据和账户管理密码。账户名称就是UKey所代表的用户的名称,主要用于显示;认证种子数据是用于认证的关键数据;账户管理密码是由网站运维人员掌握,在创建的时候,提供,写入到UKey里面,在对用户的账户信息进行管理包括删除、修改的时候,需要提供账户管理密码才有权进行。账户管理密码的作用在于避免非本网站运维人员变更UKey账户信息。不同的UKey可以有不同的账户管理密码,也可以相同。如果不同,账户管理密码也可以保存在数据库该用户的记录里面,这样一定程度上会更安全。

2.3 模块开发

2.3.1发行管理模块

1 发行 UKey
发行UKey的页面,需要包含以下页面元素:
INPUT元素:
IID_SecureWeb_I_SerialNumber:硬件序列号
IID_SecureWeb_I_ApplicationName:应用名
IID_SecureWeb_I_URL:应用URL
IID_SecureWeb_I_UserName:用户账户名称
IID_SecureWeb_I_SaltValue:认证种子数据
IID_SecureWeb_I_AdminPass:账户管理密码
按钮元素
IID_SecureWeb_B_Create:创建账户按钮
创建流程:
1 【页面需要编码完成的流程】应用名、应用URL、账户管理密码可以预先赋值value属性,认证种子数据value属性由服务器端预先生成并赋值,用户账户名称可以由运维人员输入,如果用户已经存在,也可以预先赋值,硬件序列号将由USB KEY身份认证管理系统程序自动赋值。
2 操作人员点击“创建账户按钮”后,USB KEY身份认证管理系统程序将将上述所有信息写入UKey;
3 【页面需要编码完成的流程】页面需要做的工作主要就是:创建或者修改用户记录,将硬件序列号和认证种子数据保存进数据库。这里需要注意检查不能让一个硬件序列号的绑定多个用户记录。
请参考示例中create.asp创建流程的服务器端代码片段:
<%
if request.Form("action")="dbcreate" then
set rs=conn.execute("select * from psa_users where SerialNumber='"&request.form("IID_SecureWeb_I_SerialNumber")&"'")
if not rs.eof then
conn.execute("delete from psa_users where SerialNumber='"&request.form("IID_SecureWeb_I_SerialNumber")&"'")
end if
rs.close
set rs=nothing
Conn.ExeCute("INSERT INTO psa_users (UserName, SerialNumber, AdminPass, SaltValue) values ('"&request.form("IID_SecureWeb_I_UserName")&"', '"&request.form("IID_SecureWeb_I_SerialNumber")&"', '"&request.form("IID_SecureWeb_I_AdminPass")&"', '"&request.form("IID_SecureWeb_I_SaltValue")&"')")
response.write "<script>"
response.write "alert('创建成功');"
response.write "</script>"
end if
%>

2 修改 UKey
修改和发行基本类似,只不过需要根据检查账户是否存在,以及验证账户管理密码是够正确。
INPUT元素:
IID_SecureWeb_I_SerialNumber:硬件序列号
IID_SecureWeb_I_ApplicationName:应用名
IID_SecureWeb_I_URL:应用URL
IID_SecureWeb_I_UserName:用户账户名称
IID_SecureWeb_I_AdminPass:账户管理密码
IID_SecureWeb_I_AdminPassNew:新的账户管理密码
按钮元素
IID_SecureWeb_B_Update:修改账户按钮
修改流程:
1 【页面需要编码完成的流程】应用名、账户管理密码可以预先赋值value属性,其他信息:应用URL、新的账户管理密码,用户账户名称等,可以通过设置相应元素的value属性赋值,进行修改。
2 操作人员点击“修改账户按钮”后,USB KEY身份认证管理系统程序将在验证账户管理密码后,将上述所有信息写入UKey;
3 【页面需要编码完成的流程】页面需要做的工作主要就是:修改用户记录相关域。
3 删除账户
删除指定账户。删除前会检查账户是否存在,以及验证账户管理密码是够正确。
INPUT元素:
IID_SecureWeb_I_ApplicationName:应用名
IID_SecureWeb_I_AdminPass:账户管理密码
按钮元素
IID_SecureWeb_B_Delete:删除账户按钮
删除流程:
1 【页面需要编码完成的流程】应用名、账户管理密码可以预先赋值value属性。
2 操作人员点击“删除账户按钮”后,USB KEY身份认证管理系统程序将在验证账户管理密码后,将UKey内保存的指定应用的信息删除;
3 【页面需要编码完成的流程】页面需要做的工作主要就是:修改或者删除用户相关记录。
4 回收 UKey
按钮元素
IID_SecureWeb_B_Format:格式化UKey按钮
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: