DB65∕T 4228-2019 基层基础数据共享交换平台 共享数据获取规范(新疆维吾尔自治区).pdf
lCS 35.100.70 L 79 J 电舍地g电飞J19 Basic-level basic data sharing exchange platform-Shared data acquisition speCl丑cationsD865/丁4228-2019目IJ吕本标准按照GB/T1.1-2009 标准化工作导则第1部分:标准的结构和编写的规则编制。本标准由自治区密码管理局提出。本标准由自治区密码管理局归口。本标准主要起草单位:自治区密码管理局、自治区标准化研究院、新疆亚泰信息技术有限公司。本标准主要起草人:安金鹏、阿里甫江、霍川、张振宁、赛丽滩乃提、阿米娜、杨)1顶轩、李瑜、朱翔、陈明、哈丽旦、李楠、艾力、智勇、王成、张敬闻。本标准实施中的疑问请咨询自治区密码管理局、自治区标准化研究院、新疆亚泰信息技术有限公司。对本标准的修改意见或建议,请反馈至自治区市场监督管理局(乌鲁木齐市新华南路167号)、自治区密码管理局(乌鲁木齐市天山区健康路2号、自治区标准化研究院(乌鲁木齐市河北东路188号)、新疆亚泰信息技术有限公司(乌鲁木齐市新市区体育馆巷188号)。自治区市场监督管理局联系电话0991-2817197;传真0991-2311250;邮编830004自治区密码管理局联系电话0991-2391717;传真0991-2391717;邮编830003自治区标准化研究院联系电话0991-2810215;传真0991-2810215;邮编830011新疆亚泰信息技术有限公司联系电话0991-3839311;传真0991一3825269;邮编8300111 范围基层基础数据共享交换平台共享数据获取规范D865/丁4228-2019本标准规定了基层基础数据共享交换平台共享数据获取的术语定义、基本要求、数据接口、加密密钥、版本核对、数据传送、使用及说明文件。本标准适用于对基层基础数据共享交换平台中共享数据获取过程的控制和管理。2 规范性引用文件下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅所注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。GB/T 19488.1-2004数据元第1部分:设计和管理规范GB/T 19488.2-2008数据元第2部分:公共数据元目录GB/T 21062(所有部分)政务信息资源交换体系GB/T 21063(所有部分)政务信息资源目录体系DB65/T 4227 基层基础数据共享交换平台共享数据发布规范3 术语与定义GB/T 19488.1一2004、GB/T19488.2-2008和DB65/T4227给出的以及下列术语和定义适用于本文件。3.1 数据集the data set 用于存放共享数据实体的容器。数据集包含了一组相同格式类型的数据项,定义了数据提供方原始数据库的连接信息、用于获取共享数据服务的名称等。3.2 数据项data item 依据数据抽取规则从目标数据源中抽取的共享数据,系包含在数据集中共享数据的实体。3.3 数据集连通性data set connectivity 对数据集访问服务正确性的检测描述。3.4 DB65/T 4228-2019 数据项连通性data item connectivity 在数据集连通的基础上,根据数据项抽取规则是否能够正确抽取数据的检测。3.5 数据文件data document 通过封装的共享数据实体的文件。3.6 数据描述文档data description document 用于描述共享数据文件的文档,包含有数据发布时间、更新时间、数据记录数、数据字段数及数据版本号等信患。3.7 数据版本号data version number 共享数据在更新序列上的唯一性标识符。4 基本要求4.1 基层基础数据共享交换平台(以下简称平台或平台系统的数据交换应遵循GB/T21062(所有部分给出的原则和要求。4.2 数据交换所需的目录体系应符合GB/T21063(所有部分的规定。4.3 数据交换包括下列过程:a)数据发布:提供数据的业务系统(数据提供方)向平台推送共享数据的过程。数据发布应符合DB65/T 4227的规定。b)数据获取:需获得共享数据的业务系统(数据获取方)通过平台查询获得共享数据的过程。4.4 数据检索的结果或数据内容应保存在临时目录或数据文件中,数据获取方不宜直接从数据提供方的生成数据库或平台数据库中获取数据或信息。4.5 数据提供方或数据获取方进行数据共享交换时,均须经过身份验证和权限验证,获得验证许可后,方能发布或获取数据信息o4.6 业务系统应允许平台系统根据提供方定义的更新时间间隔白动从提供方的原始数据库中获取最近更新的数据。4.7 平台系统应依据数据交换的需要,向业务系统提供必要的数据获取服务,确保业务能够顺利获取共享数据信息。数据获取服务可包括:数据接口服务、加密密钥服务、版本核对服务、数据传送服务、使用及说明文件服务。5 数据接口5.1 接口类型平台系统应向业务系统提供实现数据交换和信息共享的交换接口。交换接口可分为:2 DB65/T 4228-2019 c)固定接口:用于实现身份验证、数据集连通性检测和数据项连通性检测等基础功能的接口。这类接口的名称应依据接口所提供的服务功能命名;d)专用接口:仅用于信息数据交换的接口。这类接口的名称应依据数据提供方发布数据时提供的函数名称命名。专用接口调用时应生成一对用于标记数据提供方和数据获取方的服务标识符,服务标识符具有唯一性,用于数据访问的标识和控制。专用接口依据查询条件的不同,可分为下列类型:1)无查询参数:不带特定查询参数的数据获取接口,其参数仅包含:身份验证串、加密的公钥、数据文件版本号:2)有查询参数:带有特定查询参数的数据获取接口,除了包含身份验证串、加密的公钥、数据文件版本号外,还应包含数据提供者发布数据时定义的特定查询参数。5.2 接口描述5.2.1 固定接口5.2.1.1 身份验证用于对调用服务的用户身份实施验证。原型接口publicstring Authorization(string useri string paSSWOI吐)参数说明userid用户帐号;Password 用户密码;返回值:身份验证成功(通过身份验证),用户获取身份验证串guid;身份验证失败,返回空字符串。功能描述:用于对访问用户进行身份验证。只有己经注册的用户才能通过身份验证获得身份验证串。系统将依据身份验证串确定用户能否访问服务的其它接口。5.2.1.2 数据集连通性检测用于检测服务是否能够正确调用。原型接口publicstring DataSetConnectivity()参数说明:返回值数据集名称,连通状况功能描述1.验证数据集能否连通。对于数据集对应的服务路径不正确或是由于服务器出现故障导致的无法连通,调用方将根据返回的SoapException来判断;2.数据集名称WebService名称;3.连通状况值1表示可连通连通失败表示连通异常。5.2.1.3 数据项连通性检测用于检测服务的函数接口是否可以正确调用。3 D865/丁4228-2019原型接口publicstring DataltemConnectivity()参数说明:返回值数据项1名称,连通状况,数据项2名称,连通状况,.j 功能描述1.验证数据集中各数据项的连通状况:2.数据项*名称:服务中*函数的名称:3.连通状况值1表示可连通连通失败表示连通异常。5.2.2 专用接口5.2.2.1 无查询参数原型接口publicstring函数名(stringguid,string xmlPublicKey,string hashValue)参数说明guid为通过身份验证获取的验证串;xmlPub li cKey为加密的公钥,用于对数据密钥进行加密:hashValue为用户上1次获取该数据项的数据文件版本号。返回值:返回数据压缩包的当前块工进制数据的编码字符串。功能描述:分块获取数据项对应共享数据的压缩包的工进制数据的编码字符串。5.2.2.2 有查询参数原型接口public string函数名(stringguid,string xmlPublicKey,string hashValue,type1 arg1,type2,arg2,)参数说明guid为通过身份验证获取的验证串;xmlPub li cKey为加密的公钥,用于对数据密钥进行加密;hashValue为用户上l次获取的该数据项的数据文件版本号:arg i为typei指定的类型,是数据项的查询参数。返回值:返回数据压缩包的当前块二进制数据的编码字符串。功能描述:分块获取数据项对应共享数据的压缩包的二进制数据的编码字符串。6 加密密钥6.1 交换过程中的共享数据均须进行加密传输,即共享数据应经过加密后才可用于数据的交换。6.2 数据加密应根据数据安全的级别和要求采用相应的加密方式。6.3 平台系统应为用户提供数据加密密钥服务。业务系统可通过系统提供的密钥生成接口获取公钥/私钥对,使用公钥/私钥对为交换数据实施加密和解密。6.4 公钥/私钥对应及时通过系统进行密钥更新。7 版本核对7.1 平台系统和业务系统应通过对共享数据版本号的比对,实施对共享数据有效性的校验。7.2 数据版本号被保存在上1次获取数据的数据描述文档中。数据描述文档的内容应包含:4 D865/丁4228一2019a)获取数据的用途:b)系统获取数据的密钥:c)数据发布时间;d)获取数据的频次和更新时间:e)数据的记录数;f)字段数。7.3 专用接口的hashValue函数使用数据版本号进行赋值,专用接口可通过hashValue值的对比结果(即将接收到的hashValue值与己存在的数据版本号进行比对),向业务系统发送相应返回数据:a)相同:数据没有变更,则返回空值;b)不同:数据已有更新,传送数据的更新部分:c)空值hashValue参数值为空值或系统无版本号记录,则传送完整数据包。8 数据传送8.1 数据查询8.1.1 数据发布成功后,平台系统应将发布的服务注册到平台的目录服务中心,由目录服务中心对发布的数据进行分类和保存。8.1.2 数据调用前,业务系统须从数据目录中查询到所需的数据服务注册条目,获得对应的服务统一标识符(URL)。依据统一标识符获得目标数据的存储连接路径。8.2 数据封装8.2.1 用于交换的共享数据文件,应由系统分割、ZIP压缩成二进制文件数据块的方式进行发送。8.2.2 接收方接收到文件数据块后,通过解码生成二进制数据,并按顺序组合获得完整的数据ZIP压缩文件,当数据块字符串以#SIRC_EGSS_FILE_END结尾时,表示数据传输结束。8.2.3 在进行数据交换时应使用公钥加密对交换数据进行加密,交换完成后使用对应的私钥对接收的数据文件进行解密。8.3 数据下载数据下载是依据查询结果获取共享数据的过程。可通过添加Web引用或动态调用服务等方式获取所需的共享数据。数据下载服务调用示例见附录A。其步骤主要包括:a)数据获取的身份验证:调用服务的Authorization方法,传入用户帐号和密码进行身份验证,获得身份验证串guid;b)生成公钥/私钥对;c)获取本地已经存在的数据文件的版本号:从本地数据描述文档中获取根节点description下fileSignature节点的InnerText内容中,获取已经存在的数据文件的版本号。如果本地不存在已获取的数据描述文档,或首次获取时,版本号应为空值;d)创建1个ZIP文件zipfile;e)数据状态验证:向数据获取接口传入验证串guid、公钥和数据版本号,调用GetNationList得到的结果数据块字符串Result;f)将编码的字符串Result解码为二进制数据,追加写入zipfile文件:5 DB65/T 4228-2019 g)循环步骤e和步骤f,直到Result以#SIRC_EGSS_FILE_END为结尾字符串,则获取数据结束,得到完整的压缩包zipfile文件;h)传送数据块组到申请数据调用的系统;i)数据还原:1)平台数据还原:根据平台提供的接口来还原zipfile文件,得到原始数据文件(如为关系数据则获取XML数据文档和数据描述文档:如为空间数据,则得到GML数据文档和数据描述文档以及GML的架构文档xsd,或Shpfile格式文件及数据描述文档,或TiffWorld 格式文件及数据描述文档);2)业务系统数据还原:解压ZIP文件zipfile,解压后得到加密的数据文件GetNationList.enc和加密的数据描述文档GetNationList_Description.enc,通过私钥对数据描述文档进行解密,得到原始描述文档GetNationList_Description.xml,从数据描述文档获取数据加密的密钥和版本号,对数据进行解密,获取原始数据文件GetNationList.xmlo j)完整性验证:1)平台接口验证:以数据描述文档中数据版本号作为参数,通过平台提供的接口进行验证:2)业务系统自行验证:对还原后的数据文件进行加密,得到的数据摘要Hash值,转换为二进制数据,跟数据描述文档中的版本号进行对比,两者一致表明数据在传输过程中未被损坏或篡改。9 使用及说明文件6 平台系统应向系统用户提供数据获取相关使用及说明文件,文件内容应包括:a)为数据下载服务的提供获取动态连接库的说明文件,如Sirc.Egss.WebService.Aid.dll,Sirc.Frameworks.dll,Sirc.Egss.WebService.Dynamiclnvoking.dll等;b)提供必要的使用说明或帮助文档。D865/了4228-2019附录A(资料性附录)数据下载服务调用示例A.1 直接添加Web引用方式本标准列举通过MSVisual Studio.口et和VisualStudio C#语言为开发工具,直接添加Web引用方式,实现共享数据调用的过程可包括下列步骤:a)通过目录服务中心获得目标数据的服务URL;b)新建一个VisualStudio Ctt工程,将该服务对应的WSDL添加Web引用到工程中(Web引用命名为WS)。添加接口的程序集Sirc.Egss.WebService.Aid.dll Sirc.Egss.WebService.Dynamiclnvoking.dll,Sirc.Frameworks.dll;c)验证通过:using Sirc.Frameworks.Security.Cryptography;注:包含了DES对称DES加解密DESHelper和非对称RSA加解密RSAHelperousing Sirc.Egss.WebService.Dynamiclnvoking;注:包含了动态调用WebService获取数据开发接口。using Sirc.Egss.WebService.Aid.FileGenerator.Entities;注:包含了操作数据描述文挡的FileDesCl、iption类,引用相关的命名空间。d)在代码中通过:WS.webservicename test二newWS.webservicename();注:声明一个对象实例,其中webservicename为服务的WebService类名称,然后通过test调用服务的各个接口oe)获取公钥/私钥对:RSAHelper rsa=new RSAHelper(2048);string publicKey rsa.GetPublicKey();string privateKey二rsa.GetPrivateKey;f)通过传入用户帐号和密码进行数据访问的身份验证获取数据访问验证串guid:string guid二test.Authorization(userid,password);g)通过描述文档获取本地已经存在该数据的版本号:FileDescription description new FileDescription();string descriptionFile*刊:description.Load(descriptionFile);string hashValue description.FileSignature;h)调用获取数据的方法,获取数据块base64编码字符串,GetNationList方法不带查询参数,如果带有查询参数,还要传递相应的查询参数值:string result二test.GetNationList(guid,publicKey,hashValue);i)如果result为空,表明本地巳存在的数据文档是最新,结束数据获取;如果result不为空,转到步骤j)7 DB65/丁4228-2019j)创建zip文件用来保存获取的数据,filepath为获取数据保存的位置,声明一个文件流:FileStream sw=new FileStream(filepath,FileMode.OpenOrCreate,FileAccess.Write);sw.SetLength(O);k)将编码的字符串转为二进制数据(字节数组)写入zip文件流,循环调用该数据接口获取数据,直到接收到的result字符串以啃SIRC_EGSS_FILE_END为结尾字符串为止:string ENDFLAG二ttSIRC_EGSS_FILE_END;byte buffer;while(!result.EndsWith(ENDFLAG)buffer二Convert.FromBase64String(result);sw.Write(buffer,0,buffer.Length);result test.GetNationList(guid,publicKey,hashValue);1)数据获取结束,对最后一个数据块数据进行处理:string temp=result.Remove(result.Length-ENDFLAG.Length,ENDFLAG.Length);buffer二Convert.FromBase64String(temp);sw.Write(buffer,0,buffer.Length);sw.Close 0;m)对filepath的zip文件进行还原,获得原始数据文档和数据描述文档:FileResume fr二newFileResume(privateKey);fr.Resume(filepath);string datafile二fr.DataFilePath;string datadesfile二fr.DescriptionFilePath;n)对还原后数据文档进行验证:从还原后的描述文档datadesfile获取数据文件版本号signature方法按照步骤g执行;调用验证接口,传入待验证数据文档,以及从描述文档中获取的数据文件版本号,如果得到的flag为true表示数据文档是完整有效的,数据没有被损坏或者篡改过:bool flag=fr.VerifyDataFile(datafile,signature);fr二null;。)数据获取结束。A.2 动态调用接口方式动态调用接口获取数据(即通过名称空间Sirc.Egss.WebService.Dynamiclnvoking下设有的InvokingHelper类获取数据)的方法,是在内存中动态构建调用服务的代理类来实现与服务之间soap消息的传递。8 动态调用接口方式主要有以下步骤(以VisualStudio Ctf:语言为例):a)通过目录服务中心获得目标共享数据的服务URL;b)新建VisualStudio Ctt工程,添加程序集引用Sirc.Egss.WebService.Dynamiclnvoking.dll,程序集的名称空间Sirc.Egss.WebService.Dynamiclnvoking下的InvokingHelper类包含了动态调用WebService获取数据的开发接曰:c)添加名称空间引用,包含动态调用WebService获取数据开发接口:using Sirc.Egss.WebService.Dynamiclnvoking;0865/丁4228-2019d)声明一个实例InvokingHelper:string wsdl二*.asmx?wsdl;strig methodName二GetNat i onLi st;string filepath二C:testGetNatio日List.zip;string applicationStartupPath二Request.PhysicalApplicationPath十binInvokingHelper test=new InvokingHelper(wsdl,applicationPath);e)通过RSAHelper获取公钥/私钥对(见A.l步骤e);f)通过传入用户帐号和密码进行数据访问的身份验证获取数据访问验证串guid:string accessGuid test.Authorization(userid,password);g)通过描述文档获取本地已经存在该数据的版本号(见A.1步骤g);h)调用下载数据接口,获取数据压缩包保存到filepath指定的文件:test.DownLoadData(fi 1 epath,methodName,accessGuid,xmlpubl ickey,hashvalue,argList);说明:1)argList为查询参数名/值对的Hash表(假设有个参数名为argl,传入的值为argValue1.只需将该名/f亩对添加到HashtableargList中,如argList.Add(argl,argValuel),多个查询参数添加顺序跟接口参数顺序可以不同,不带查陶参数贝。argList设置为null;2)可以通过InvokingHelper类提供的方法获得查询参数列表,即WebService方法中除guid、xmlPublicK町、hashValue以外的参数:Hashtable argList test.GetMethodArgs(methodName)0 i)还原数据(见A.l步骤m);j)验证数据完整性和有效性(见A.1步骤n);k)数据获取结束。9