新一代个人网上银行分行特色业务开发规范v.docx
- 文档编号:29655878
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:18
- 大小:103.13KB
新一代个人网上银行分行特色业务开发规范v.docx
《新一代个人网上银行分行特色业务开发规范v.docx》由会员分享,可在线阅读,更多相关《新一代个人网上银行分行特色业务开发规范v.docx(18页珍藏版)》请在冰豆网上搜索。
新一代个人网上银行分行特色业务开发规范v
新一代个人网银分行特色业务
介绍及开发规范
交通银行个人网银项目组
2006年09月
修订记录
日期
版本
修订目的描述
作者
审核
2005-9-20
1.0
文档初建
2006-12-13
1.1
添加4.6启用手机动态密码
添加4.7密码控件
毛乃峰
引言
由于新一代网上银行模式与界面的改变,对分行的特色业务随之带来了相应的变化,证书版本的推行,登录方式的改变,都将影响到老网银的特色业务模式,主要改变为如下两点:
⏹界面风格的改变;
⏹密码传送的改变;老网银交易模式为由总行网银通过HTTPProxy每次传送客户登录密码,密码加密处理;而新网银证书版的推出,客户用证书登录,总行无法传送交易密码,现改变为由分行提供界面给客户输入密码,传送至总行网银APPSERVER,由总行网银APPSERVER加密后,在传递给分行特色业务APPSERVER,解密后进行业务处理。
详细处理方式请参照开发规范。
以下为新一代网上银行特色业务介绍及开发规范。
1技术架构介绍
1.1.特色业务架构
新一代网上银行分行特色业务架构沿用老的对私网上银行特色业务系统架构,是一个基于J2EE的B/S系统,与总行网银的技术架构完全一致。
架构设计的原则是,总行端进行请求转发,分行端实现业务逻辑以及界面展现。
1.2.特色业务数据流和操作流程说明
分行特色业务功能通过Web页面直接访问,客户登录总行网上银行,在总行端建立起用户ID的SESSION信息后,点击“代理缴费”的菜单,总行应用服务器根据客户登录卡号,获取该卡的分行号,根据该分行号获取分行的特色业务APPSERVER的首页面地址(总行端维护),通过总行HttpProxy代理,将请求转发至分行特色业务应用服务器,再获取分行返回数据流,展现至客户端,这样类似一个特色业务登录的过程就完成了;之后客户——总行应用服务器——分行应用服务器之间的数据交互同样通过HttpProxy代理来完成。
数据流如下图所示:
2.网络与安全
2.1.总分行模式总体网络拓扑结构
如下图所示:
说明:
⏹DMZ区前为PIX防火墙,客户访问近来先穿透该防火墙;总行网上银行WEBSERVER架设在DMZ区,因为它的安全级别相对较低,WEBSERVER存储的是静态页面和图片。
⏹F5为负载均衡设备,承载的功能为广域网的链路负载(网通、电信)及交易的流量负载,同时它具备防攻击的特性。
⏹从WEBSERVER过滤请求,对于安全级别交高的请求,WEBSERVER将请求转发至网银APPSERVER,同样,从DMZ区访问中心网段需要穿透一个防火墙。
⏹特色业务的访问是通过总行应用服务器直接访问分行的特色业务应用服务器,总分行间链路通过行内内部网,对于交易请求的关键字段,例如卡号和密码,总分行约定加密算法进行加密处理(见开发规范)。
⏹对于公网的交易数据请求,通过标准的单向的SSL和双向的SSL(证书)进行链路加密处理。
⏹上图中,若对于大集中上线行,直接通过分行ICS访问总行C-BANKING。
3.总行HTTPProxy功能说明
3.1.功能列表
⏹请求转发;访问到分行的特色业务APPSERVER。
分行特色业务请求的URL作为HTTPProxy的一个参数,HTTPProxy必须获取该请求参数,才进行转发。
⏹HTTPProxy转发登录总行网银后的部分SESSION信息,例如卡号及SEESIONID。
⏹对于特色业务请求FORM表单中的数据,HTTPProxy进行完全转发。
⏹支持文件下载。
⏹支持文件上传。
(文件大小限制)
⏹交易签名处理。
对于证书用户,需要验签的交易,分行端按照总行提供的标准进行页面加签处理,提交到总行端Proxy后,由总行端HTTPProxy首先进行验签处理,处理成功后,总行端保存签名信息,同时获取签名原始数据,总行端解开签名原始数据,传递给分行端,最后由分行端进行业务处理。
⏹启用手机动态密码。
对于需要加动态密码的交易,分行端按照总行提供的标准传送给总行sendPass标志,提交到总行端Proxy后,由总行端HTTPProxy首先进行判断处理,如果标志为1则生成动态密码,传递给分行端,同时将动态密码发送给手机用户,最后由分行端进行业务处理。
4.开发规范
4.1.界面风格
由于新一代个人网上银行的界面风格进行了重新的设计,为了保持风格的一致性,要求分行的特色业务应用上的所有界面风格严格按照附件DEMO中提供的代理业务的界面模板,进行风格的重新改版。
Jsp页面和html页面严格引用样式表,不要在页面自行中定义颜色、高度和宽度。
4.2.普通交易请求
⏹dse_sessionId为所有交易请求的关键字段,表示客户登录的唯一标识,所有交易的请求中必需带上dse_sessionId。
获取方式如下:
<%
Stringdse_sessionId=request.getParameter(“dse_sessionId”);
%>
⏹对于具体交易的请求必须以FORM表单POST方式提交,分行端的请求地址的字段名为URL(必须大写),例:
URL=/index.jsp,作为表单的HIDDEN变量进行传递;分行端请求的IP和端口不要写在URL串中,由总行应用服务器根据dse_sessionId获取提供。
例:
总行应用服务器根据以上请求组成新的URL串,例http:
//182.248.162.65/index.jsp。
⏹对于图片,Javascript脚本及样式表的获取,请不要直接从总行应用服务器获取,同样通过代理的方式获取;对于图片和脚本通过GET方式获取..总行提供所有界面图片,按钮以及一些基础脚本,获取方式如下:
URL=/css/style.css&dse_sessionId=<%=dse_sessionId%>"> URL=/js/public.js&dse_sessionId=<%=dse_sessionId%>"> URL=/images/logo.gif&dse_sessionId=<%=dse_sessionId%>"width="184"height="52"> ⏹提交的FORM表单的action为"/personbank/HttpProxy",为相对路径。 例: ⏹每次交易的提交必须传递dse_sessionId,该ID为客户登录的唯一标识,总行端会根据该ID获取客户卡号等登录信息,再传递给分行应用服务器进行交易的处理,传递方式如下: <% Stringdse_sessionId=request.getParameter("dse_sessionId"); %> ⏹总行对于特色业务的交易请求会传递操作卡号,字段名为cardNo,分行获取方式为 <% StringcardNo=request.getParameter("cardNo"); %> ⏹由于新一代网上银行登录方式的改变,无法从总行应用服务器server端获取操作卡的密码信息,所以对于特色业务密码类交易,需要在分行应用端增加密码的输入域,客户输入完密码后,同其他的请求输入域提交给总行端,总行端对密码进行DES加密处理,密钥为dse_sessionId,总行会将加密后的密码及dse_sessionId再传递给分行应用服务器,分行根据总行提供的加密算法进行解密处理后,再进行业务处理.对于密码字段总分行约定为passWord,处理方式如下: <%@pagelanguage="java"contentType="text/html;charset=GBK"%> <%@pageimport="com.bocom.eb.des.EBDES"%> <% StringpassWord=request.getParameter(“passWord”);//加密密码 dse_sessionId=request.getParameter(“dse_sessionId”); passWord=EBDES.decryptoDES(password,dse_sessionId);//解密后密码 %> ⏹对于分行端servlet请求,请务必带上路径servlet(小写),用于区分交易请求和静态请求,例: ⏹客户端IP地址的获取,在分行特色业务应用中,最好记录每笔客户交易的IP地址,获取方式如下: <% StringremoteIp=request.getParameter("remoteIp"); %> 4.3.文件下载 ⏹下载文件大小请不要超过10M ⏹获取文件的请求方式如下所示 URL=/file/download.pdf&dse_sessionId=<%=dse_sessionId%>”>下载 4.4.文件上传 ⏹上传文件大小请不要超过5M ⏹上传文件请求方式如下所示 4.5.数据签名 ⏹获取登录类别,用于区分证书用户、注册用户还是普通用户。 <% StringloginType=request.getParameter("loginType");//传送登录类别0-注册用户(手机版)1-证书用户2-大众用户 %> ⏹获取登录证书DN。 (DN和登录用户客户号绑定) <% StringlogonUserDn=request.getParameter("logonUserDn");//获取登录证书DN %> ⏹获取加签标记 <% StringisVerifySign=request.getParameter("isVerifySign"); %> 若加签交易该值不为“1”,则分行端拒绝交易(防止客户端篡改) ⏹初始化签名控件 ⏹脚本加签处理 示例脚本如下: varclickBoolean=true;//防止两次提交 functionbeforeSubmit() { varcardNo='<%=cardNo%>'; varloginType='<%=loginType%>'; varmobPhone=document.form1.mobPhone.value; vardealBal=document.form1.dealBal.value; varremoteIp='<%=remoteIp%>'; <%--拼接需要加签数据,规则如下所示--%> varsignData='cardNo='+cardNo+'|dealBal='+dealBal+'|mobPhone='+mobPhone+'|remoteIp='+remoteIp; <%--签名增加部分2BEGIN--%> InfoSecNetSign1.NSServerMode=0; InfoSecNetSign1.NSSetPlainText(signData); document.form2.signData.value=nfoSecNetSign1.NSAttachedSign('<%=logonUserDn%>'); if(! form2.signData.value) { alert("签名操作取消! "); return; } if(clickBoolean)//防止form两次提交,注意在触发交易事件中,用onClick事件触发交易,不要用href链接触发 { form2.submit(); clickBoolean=false; } <%--签名增加部分2END--%> } ⏹FORM提交规则 加签交易FORM必须另提供四个字段isVerifySign,signKey,signTranCode,signData;分行端必须按照这四个字段名进行提交。 isVerifySign: 该字段表示该交易是否为加签交易。 注意: 该字段会传递回分行端,由于该字段在客户端form表单中显示,建议分行端校验该字段值是否为“1”,若加签交易该字段值不为“1”的话,则拒绝交易(防止客户端篡改)。 signKey: 该字段为签名数据关键字段,该笔交易的关键标识,最好是唯一标识,便于加签数据的查询(分行端自己生成),总行端会保存该关键字段 signTranCode: 该字段为分行特色业务交易码(便于加签数据的查询,分行端根据自己实际交易情况提供),总行端会保存该交易码 signData: 该字段为加签数据 示例如下: <%--签名增加部分3BEGIN--%> 不需要验签--%> <%--签名增加部分3END--%> 4.6.启用手机动态密码 sendPass为所有需要加动态密码交易请求的关键字段,此字段表示此交易是否需要加动态密码。 所有加动态密码的交易请求中必需带上sendPass。 当sendPass值为1时,则总行将生成动态密码并向分行发送动态密码,并且同时将动态密码发给手机用户;当sendPass值为2时,则总行将重新发送动态密码给手机用户。 1.发送手机动态密码: ⏹FORM提交规则 对于需要传送动态密码的交易,FORM必须另提供sendPass字段。 该字段表示该交易是否需要动态密码。 注意: 该字段会传递回分行端。 由于该字段在客户端form表单中显示,为防止客户端篡改, 分行端在校验动态密码前一定要校验该字段值是否为“1”或“2”。 其中“2”为重发动态密码标志。 若该字段值不为“1”或“2”的话,则拒绝交易。 示例如下: <%--增加传送动态密码部分--%> <%--是否传送动态密码标志“1”,标识该交易为需要传送动态密码交易--%> ⏹对于分行需要加动态密码的页面,获取是否发送动态密码sendPass标记的方法为: <%StringsendPass=request.getParameter("sendPass");%> 若sendPass值不为“1”或“2”,则分行端拒绝交易(防止客户端篡改)。 ⏹分行获得动态密码dynamicCode和密码序号dynamicCodeSeq 当总行检测到分行提交的sendPass值为1或2时,总行将生成的动态密码存在dynamicCode字段中,密码序号存在dynamicCodeSeq字段中,传给分行。 分行获得动态密码dynamicCode,密码序号dynamicCodeSeq的方法为: <% StringdynamicCode=request.getParameter(“dynamicCode”); StringdynamicCodeSeq=request.getParameter(“dynamicCodeSeq”); %> 其中动态密码dynamicCode为6位由手机用户输入,分行进行校验。 密码序号dynamicCodeSeq为2位,由分行在页面上显示给用户,以提示用户该输入的动态密码。 2.重新发送手机动态密码: 为了避免手机用户由于某种原因没有接到短信,分行可以在页面设置重新发送动态密码功能。 注意: 分行应该控制用户在发送动态密码后,间隔一定时间之后,在允许用户重新发送动态密码。 建议分行间隔60秒后,允许用户重新发送。 重发只能发一次,由分行在页面上控制。 此时分行需要上传的sendPass值为“2”。 示例如下: <%--增加传送动态密码部分--%> 不需要重新传送动态密码--%> 4.7.密码控件 要使用本控件,需要调整IE的安全级别,或者对它进行代码签名,使其能运行ActiveX控件。 控件定义的fieldName属性,必须在提交的Form表单中有一个隐藏域与之对应,fieldName属性值与隐藏域名要相同。 ⏹控件引用及初始化 引用总行端密码控件,引用方式如下: ⏹控件加载 参数说明: safeInput1: ID号 safeInput1: 控件名称 /personbank/: 路径 newPassWord: fieldname(表单名称) 6: 密码最大长度 6: 密码最小长度 20: 输入框高度 120: 输入框长度 ⏹输入密码域合法性判断 functionbeforeSubmit() { if(document.safeInput1.allType()! ="10000"||document.safeInput1.isValid()){ alert("请输入合法的密码"); return; } } ⏹密码域提交 document.safeImit("safeCommit1"); ⏹安全控件的属性和方法如下: safeInutGUID=ECCBA953-80E5-11D3-9285-0080ADB811C5 属性 含义 borderStyle 界面风格,可以为FlatBottomLineBorder3dBorderRaised3dBorderSu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新一代 个人 网上银行 分行 特色 业务 开发 规范