




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
深圳同慧科技有限公司 技术文档 版权所有WEBAC使用演示&给网站开发人员的一些建议一 如果您是一个开发人员,如果您希望使用硬件对您的用户进行身份认证,那就让我们开始一次WEBAC开发之旅吧!1 为什么要使用硬件?这一点可能您比我们想得更清楚,追求更高的安全性,或者希望用户觉得很好用,或者让用户觉得自己的产品更有价值,总之,原因可能很多.2 WEBAC是什么?Web Access Control的缩写,是一种基于硬件对网站使用者进行身份认证的技术和产品方案。这个方案基于创新的专利技术,相比其他方案具备较多优势(想了解这些优势,可以参考我们的其他文档。)3 什么样的产品合适使用WEBAC?您企业自己运营的面向外部用户的网站,或者是企业内部B/S结构的管理系统;或者是您为其他企业开发的网站和管理系统;或者是您企业开发的B/S结构的软件产品,WEBAC都适用。总之,WEBAC主要适用于网站或类似于网站的B/S系统。对于非B/S结构的系统,如何使用硬件进行强化身份认证,您可以咨询我们的销售人员。4 WEBAC方案对开发人员的要求需要了解HTML,需要了解数据库,需要了解一种常用的网页程序开发语言,例如ASP,JSP或者PHP等等。不过作为一个网站开发人员,这些要求是基本的。尽管WEBAC是一个基于硬件的方案,却不需要用户了解任何USB硬件的开发知识。二 WEBAC的基本原理在网页上要实现基于硬件对用户进行身份认证,就必然需要网页能够访问硬件内所存储的数据。但是网页有基本的安全模型,“沙盒”(SandBox),目的就在限制网页对本地资源的访问能力,这两者实际上是矛盾的。Microsoft推出的ActiveX能够解决开发人员在实际开发中遇到的这个问题,但是ActiveX过于强大,事实上几乎无所不能。IE的做法是使用签名验证,然后提示用户认清控件来源,把选择权交给用户。这样就在用户端需要进行若干安全设置,部署这类系统在用户那里常常造成困扰,用户不知道怎么样去做设置,只能求助于技术支持人员,形成大量的售后支持需求。WEBAC不使用ActiveX。其要点在于在用户终端运行一个具备本地资源访问权限的可执行程序,该程序负责:1 与网页进行交互,获取网页对硬件的读写操作要求;2 与硬件进行交互,执行读写硬件数据的操作;WEBAC与硬件如何进行交互,容易理解,就是利用硬件的API进行读写。现在剩下的问题就是WEBAC与网页如何交互。三 WEBAC如何与网页进行交互?很简单,WEBAC利用预先定义的网页元素,来实现与网页的交互,比如网页里面有个Edit控件元素,其ID为IID_SecureWeb_I_SerialNumber,当硬件插入时WEBAC就会自动读出硬件的ID序列号,并将该控件的value属性赋值为序列号数据,这样网页就获知了当前插入的硬件的ID序列号,这样实现了WEBAC与网页的交互;再例如,网页里面有个Edit控件元素,其ID为IID_SecureWeb_I_Signin,当终端用户按下此按钮,WEBAC就知道用户选择了登录操作,就执行登录过程所需要的运算并将运算结果传送给网页。WEBAC开发手册列举了所有这类预先定义的网页元素,及其含义、功能、属性。WEBAC就是通过这些网页元素来实现网页与硬件之间的交互的。四 WEBAC身份认证的原理明白了WEBAC实现网页与硬件进行交互的原理之后,您肯定还想了解WEBAC如何实现对用户的身份认证的。1 一个UKey硬件绑定一个用户这个通过发行UKey 来实现。所谓绑定一个用户,实际上是绑定一条用户记录。由于每一个UKey都具备一个唯一的序列号,发行的过程,就是在数据库中的该用户记录里面加上序列号信息,也就是准备发给这个用户的UKey的序列号的信息。同时在硬件和数据库里面都写入一个随机字符串信息。2 认证用的种子数据(Salt Value)写入的这一串随机字符串信息,就是用于认证的种子数据。传统的账户+密码的用户认证方式中的密码相当于认证用的种子数据,只不过他不能变化,要变就要执行修改密码的流程,并且要通过网络传输到服务器端,如果是HTTPS模式,还能够避免传输过程中的泄漏,目前大多数的网站都没有这样做,对于一些小型网站或者内部用的网站,很少使用HTTPS的,这样,实际上很容易就能够跟踪到明文传送的账户密码信息,实际上是谈不上任何安全性。WEBAC使用的基于种子数据的认证,其流程是这样的:服务器端准备一串临时生成的随机数据,终端使用UKey里面保存的种子数据作为密钥对该随机数据进行加密,然后将结果传送到服务器端,服务器端再根据数据库里面保存的同样一份种子数据,做同样的运算,如果结果相同,就表明这个用户得到了认证。这个过程中,在网上传输的是一个将临时生成的随机数据加密后的结果,本身也会是无规律可循的,每次都会不一样的结果,作为用户关键特征的最重要的数据:种子数据并没有传输。这样,实现了认证目标的同时,安全性也得到了保证。所有这些数据,包括临时生成的随机数据,加密结果都是通过网页元素进行传递的。五 让我们开始吧:WEBAC开发的准备工作1 数据库需要给数据库里面的用户表增加两个域:SerialNumber (建议变长字符串类型,长度32,可以为空),SaltValue(建议变长字符串类型,长度32,可以为空)(这个数据表域名可以自行确定)。当然您还可以增加别的以便更好的管理,比如,绑定UKey的时间(或者说是UKey的发行时间)等等。域名可以自行设定,不一定是按照这里说的做。(约束您开发的实际上只有那些页面元素的ID,其他都不作限定)。2 页面语言您可以选择ASP、ASP.NET、JSP、PHP,这些无关紧要。实际上,如果您完全理解了WEBAC方案的原理,就会明白,任何页面程序开发语言其实都可以使用。只不过上述的几种我们提供了一个基本可以使用的示例代码。您可以在示例代码文件包里面找到相应的目录,然后解压出来即可。下面讲解中我们主要以ASP代码为例。3 理解基本架构利用WEBAC方案实现网站用户身份认证,需要实现两个功能模块:UKey的发行|管理模块(包括发行、修改、删除、回收等等功能),终端用户的认证模块。按照一般的说法,前者面向网站运营维护人员,属于网站后台,后者面向网站用户,始于网站前台。4 理解基本概念UKey硬件序列号每个UKey硬件都有一个唯一的硬件序列号,由16位数字组成。登录入口一个登录入口由一个名称和一个URL两项信息组成。登录入口在WEBAC相关文档里面称为“应用”。登录入口的名称(“应用名”)必须是唯一的,能够与其他登录入口相区别。URL有两个作用,一是在终端插入UKey时,需要弹出登录入口时,会主动弹出的网址;二是URL的域名部分会用于检查,使该应用对应的用户在同一域名下不同的URL也可以进行认证。一个网站可以包含多个登录入口,一个登录入口在同一个网站下(以域名为准)可以有多个登录网址。每个UKey针对一个登录入口只能创建一个账户。如果一个UKey用户需要登录多个网站,就要设置多个登录入口,并在每个用户UKey内为每个登录入口创建一个账户。用户账户信息用户账户信息由三部分组成:账户名称、认证种子数据和账户管理密码。账户名称就是UKey所代表的用户的名称,主要用于显示;认证种子数据是用于认证的关键数据;账户管理密码是由网站运维人员掌握,在创建的时候,提供,写入到UKey里面,在对用户的账户信息进行管理包括删除、修改的时候,需要提供账户管理密码才有权进行。账户管理密码的作用在于避免非本网站运维人员变更UKey账户信息。不同的UKey可以有不同的账户管理密码,也可以相同。如果不同,账户管理密码也可以保存在数据库该用户的记录里面,这样一定程度上会更安全。5 与项目相关的问题通过几个问题来确定您的项目如何开始:1 需要支持多个不同的网站吗?不同的网站是指域名不同(如果使用IP的话,IP不同),这种情况下,肯定需要多个登录入口(应用),需要为每个登录入口指定不同的名称,以便区分;并且在发行的时候,为需要登录的UKey用户,针对每一个登录入口,创建一个账户。这种情况下,如果为了更好的管理,可能有可以考虑用一张表来记录这些登录入口的信息。当然如果不多的话,登录入口的信息(应用名称、URL、甚至管理密码)也可以做成常数在页面中调用。2 同一个网站需要有多个登录页面吗?如果只是页面设计略有不同,以面向不同类型的用户,可以使用同一个登录入口(名称相同),在发行的时候,URL可以不同。如果不是这样,也可以将同一网站的不同登录页面是为不同的登录入口,这样的话,同样需要为不同的登录入口都要创建一个账户。在示例里面,我们设计了一个名为sample的登录入口,它对应的URL为/web/login.asp六 发行管理模块1 发行 UKey发行UKey的页面,需要包含以下页面元素:INPUT元素:IID_SecureWeb_I_SerialNumber:硬件序列号IID_SecureWeb_I_ApplicationName:应用名IID_SecureWeb_I_URL:应用URLIID_SecureWeb_I_UserName:用户账户名称IID_SecureWeb_I_SaltValue:认证种子数据IID_SecureWeb_I_AdminPass:账户管理密码按钮元素IID_SecureWeb_B_Create:创建账户按钮创建流程:1 【页面需要编码完成的流程】应用名、应用URL、账户管理密码可以预先赋值value属性,认证种子数据value属性由服务器端预先生成并赋值,用户账户名称可以由运维人员输入,如果用户已经存在,也可以预先赋值,硬件序列号将由WEBAC程序自动赋值。2 操作人员点击“创建账户按钮”后,WEBAC程序将将上述所有信息写入UKey;3 【页面需要编码完成的流程】页面需要做的工作主要就是:创建或者修改用户记录,将硬件序列号和认证种子数据保存进数据库。这里需要注意检查不能让一个硬件序列号的绑定多个用户记录。 请参考示例中create.asp创建流程的服务器端代码片段:%if request.Form(action)=dbcreate thenset rs=conn.execute(select * from psa_users where SerialNumber=&request.form(IID_SecureWeb_I_SerialNumber)&)if not rs.eof thenconn.execute(delete from psa_users where SerialNumber=&request.form(IID_SecureWeb_I_SerialNumber)&)end ifrs.closeset rs=nothingConn.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 response.write alert(创建成功);response.write end if%2 修改 UKey修改和发行基本类似,只不过需要根据检查账户是否存在,以及验证账户管理密码是够正确。INPUT元素:IID_SecureWeb_I_SerialNumber:硬件序列号IID_SecureWeb_I_ApplicationName:应用名IID_SecureWeb_I_URL:应用URLIID_SecureWeb_I_UserName:用户账户名称IID_SecureWeb_I_AdminPass:账户管理密码IID_SecureWeb_I_AdminPassNew:新的账户管理密码按钮元素IID_SecureWeb_B_Update:修改账户按钮修改流程:1 【页面需要编码完成的流程】应用名、账户管理密码可以预先赋值value属性,其他信息:应用URL、新的账户管理密码,用户账户名称等,可以通过设置相应元素的value属性赋值,进行修改。2 操作人员点击“修改账户按钮”后,WEBAC程序将在验证账户管理密码后,将上述所有信息写入UKey;3 【页面需要编码完成的流程】页面需要做的工作主要就是:修改用户记录相关域。3 删除账户删除指定账户。删除前会检查账户是否存在,以及验证账户管理密码是够正确。INPUT元素:IID_SecureWeb_I_ApplicationName:应用名IID_SecureWeb_I_AdminPass:账户管理密码按钮元素IID_SecureWeb_B_Delete:删除账户按钮删除流程:1 【页面需要编码完成的流程】应用名、账户管理密码可以预先赋值value属性。2 操作人员点击“删除账户按钮”后,WEBAC程序将在验证账户管理密码后,将UKey内保存的指定应用的信息删除;3 【页面需要编码完成的流程】页面需要做的工作主要就是:修改或者删除用户相关记录。4 回收 UKey按钮元素IID_SecureWeb_B_Format:格式化UKey按钮七 用户认证模块INPUT元素:IID_SecureWeb_I_SerialNumber:硬件序列号IID_SecureWeb_I_SigninType:网站的登陆方式(value属性为1表示自动登录)IID_SecureWeb_I_Random:临时生成的用于认证的随机数据IID_SecureWeb_I_MD5Result:用于接收终端计算结果按钮元素IID_SecureWeb_B_Signin:登录按钮(用户认证)认证流程:1 【页面需要编码完成的流程】网页服务器端生成一串临时的用于认证的随机数据,并保存起来,然后赋值给IID_SecureWeb_I_Random。2 WEBAC程序根据以下算法计算出一个字符串:MD5Result_Client = MD5(SerialNumber + AdminPass + Random + SaltValue)并将值赋予IID_SecureWeb_I_MD5Result。3 【页面需要编码完成的流程】认证页面在SUBMIT后,在服务器端根据上传的硬件序列号找到UKey所代表的用户的记录,并读出记录里在发行时写入该UKey的种子认证数据,按照同样的算法计算:MD5Result_Server = MD5(SerialNumber + AdminPass + Random + SaltValue)并将此数据与终端上传的MD5Result_Client进行比较,如果一致,表明认证通过。认证使用的算法为MD5,这个算法在不同的语言中,结果都是一致的。请参考示例中login.asp创建流程的服务器端代码片段:%if request.form(action)=sub thenset rs=conn.execute(select * from psa_users where UserName=&request.form(IID_SecureWeb_I_UserName)& and SerialNumber=&request.form(IID_SecureWeb_I_SerialNumber)& )if not rs.eof thenMD5Result_s=md5(rs(SerialNumber)&rs(AdminPass)&Session(GetCode)&rs(SaltValue)elseMD5Result_s=Session(GetCode) 可以为任意非空值end ifrs.closeset rs=nothingif UCase(MD5Result_s)=Left(request.form(IID_SecureWeb_I_MD5Result),32) thenresponse.Write(验证通过)此处可自行添加验证通过后其他页面动作。例如session赋值,页面转向等elseresponse.Write 验证未通过response.Write S-&MD5Result_s&-&UCase(MD5Result_s)response.Write C-&request.form(IID_SecureWeb_I_MD5Result)&-response.Write S-&rs(SerialNumber)&-&rs(AdminPass)&-&Session(GetCode)&-&rs(SaltValue)response.Write C-&request.form(IID_SecureWeb_I_SerialNumber)&-&request.f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备拆除合同范本合集
- 果园招标合同范本
- 超市策划设计合同范本
- 规培医生合同范本
- 冷冻章鱼采购合同范本
- 橱柜销售标准合同范本
- 学校维修栏杆合同范本
- 做校园广告合同范本
- 社区安全知识培训课件信息
- 中介租房正规合同范本
- 骨科植入物在手术中的管理
- 铸牢中华民族共同体意识课件
- 手术前备皮课件
- 病案管理法律法规培训
- 村支部书记申请书
- 2025年度充电桩充电设施安全检测与维修合同范本4篇
- 2025年中国宝武钢铁集团有限公司招聘笔试参考题库含答案解析
- 高级综合英语知到智慧树章节测试课后答案2024年秋浙江中医药大学
- 电信行业网络优化与安全保障措施
- JJF(京) 114-2023 安德森六级撞击微生物采样器校准规范
- 番茄病毒病图谱及简介
评论
0/150
提交评论