CN101645885A - 基于服务配置标记语言身份管理协议实现数据传送高效压缩方法 - Google Patents

基于服务配置标记语言身份管理协议实现数据传送高效压缩方法 Download PDF

Info

Publication number
CN101645885A
CN101645885A CN200910027786A CN200910027786A CN101645885A CN 101645885 A CN101645885 A CN 101645885A CN 200910027786 A CN200910027786 A CN 200910027786A CN 200910027786 A CN200910027786 A CN 200910027786A CN 101645885 A CN101645885 A CN 101645885A
Authority
CN
China
Prior art keywords
spml
request
java object
identity management
service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN200910027786A
Other languages
English (en)
Inventor
曾宁生
刘涛
康缪健
吴冬
庞海东
陆志强
王晓峻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LINKAGE SYSTEM INTEGRATION CO Ltd
Linkage Technology Co Ltd
Original Assignee
LINKAGE SYSTEM INTEGRATION CO Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LINKAGE SYSTEM INTEGRATION CO Ltd filed Critical LINKAGE SYSTEM INTEGRATION CO Ltd
Priority to CN200910027786A priority Critical patent/CN101645885A/zh
Publication of CN101645885A publication Critical patent/CN101645885A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Document Processing Apparatus (AREA)

Abstract

基于SPML身份管理协议实现数据传送高效压缩方法:以SPML规范的Java开源实现OpenSPML Toolkit提供SPML客户端、SPML服务端和消息处理三部分应用程序接口API,SPML客户端API作用在于将Java对象表示的SPML请求转换成SPML消息发向SPML服务端,并将SPML服务端返回的SPML响应转换成Java对象;SPML服务端的主体是一个servlet和一个消息处理接口,servlet接收SPML请求后转换成Java对象,并以其为输入参数调用消息处理接口,最后将接口返回的Java对象转换成SPML响应后发回SPML客户端。

Description

基于服务配置标记语言身份管理协议实现数据传送高效压缩方法
一、技术领域
本发明涉及基于SPML的身份管理的方法,尤其是应用于在身份服务器端与代理端间通信技术领域中数据传送的压缩方法。
二、背景技术
身份管理简介:在数字世界中,特定应用程序、网络、系统等等的用户仅仅是一个用户ID,通过身份验证后获得惟一的身份。这就是需要管理的数字身份。随着系统和网络的数量以及复杂性的不断增长,管理数字身份已经成为一项重大的挑战。身份管理指的是一个或多个身份的整个生命周期的管理,从创建到销毁以及中间发生的事情,比如管理许可、特权和修改等。
SPML是Service Provisioning Markup Language缩写,中文名称为服务配置标记语言。SPML 2.0通过OASIS的供应服务技术委员会(Provisioning ServicesTechnical Committee)的批准,成为身份管理协议标准。SPML是一个XML框架,用于在不同组织使用的网络和应用程序间管理诸如用户帐户和权限的资源。新的标准包括许多公司用于管理敏感的应用程序和网络资源所需的类似密码管理和用户帐户取消供应的功能。
对于一个软件系统而言,账号、认证、授权和审计是保证安全性的基本要求,即确定哪些人(账号)可以登录系统(认证)执行哪些操作(授权),且适当记录操作时间、内容和结果(审计)以备责任追踪。随着业务的快速发展和变化,很多大型企业在内部部署了众多软件应用,在外部和合作伙伴建设了公用系统,而这些系统往往各自为阵,拥有独立的账号、认证、授权和审计功能。对于普通用户,为完成工作任务,需要记忆多个账号/密码并通过多种界面登录多个系统。对于管理员,需要维护多套系统的多个账号的生命周期(增、删、改),尤其是密码强度规则的执行和密码的定期修改、遗忘后重置。这样,企业的工作效率下降,管理成本上升,安全风险加大。
另一方面,美国萨班斯-奥克斯利法案SOX(Sarbanes-Oxley Act)、健康保险流通与责任法案HIPAA(Health Insurance Portability and Accountability Act)和金融服务现代化法案GLB(Gramm-Leach-Bliley Act)等从法规上强制软件系统遵循一定的安全规范。其中,尤以SOX对国内在美上市企业影响重大。在这样的背景下,身份管理应运而生,在国外已成安全市场重要增长点,而国内很多企业也制定了相关的规范,如中国移动集团的4A安全技术规范[2]。身份管理系统实现上有许多行业标准,例如用户供给协议SPML(Service Provisioning Markup Language)[3][4]。SPML基于XML,定义了批量操作和查询操作的消息封装格式,但未规定其压缩方法。
基于SPML身份管理包括三个基本组成部分:请求机构(Requesting Authority,RA)、配置服务点(Provisioning Service Point,PSP)和配置服务目标(ProvisioningService Target,PST),如图1所示:
·请求机构(RA):SPML方案中的客户。它创建形式良好的SPML文档并作为请求发送给SPML服务点。这些请求描述了在特定服务点上执行的操作。RA向SPML服务点发送请求,要求RA和SPML服务点之间存在信任关系。每个SPML服务点都可以作为RA向其他服务点发送SPML请求。
·配置服务点(PSP):这部分负责监听并处理来自RA的请求,然后将响应返回给RA。监听和处理结构良好的SPML文档的任何组件都称为配置服务点。
·配置服务目标(PST):实际执行动作的软件。比如,存储组织用户帐号的LDAP目录,或者用于记录IT请求(比如为新员工申请膝上型电脑)的IT票证系统。
·身份管理系统普遍运行于大规模异构网络环境中。而涉及批量操作和查询操作的SPML消息文本一般很大,在外部网络上传输较慢。参见附件:
1.Earl Perkins,Perry Carpenter.《Magic Quadrant for User Provisioning》,2008.8.15http://mediaproducts.gartner.com/gc/reprints/ibm/external/2008/vol.ume3/article22/pdf/ article22.pdf
2.中国移动通信有限公司.《中国移动业务支撑网4A安全技术规范》,2007
3.OASIS.《OASIS Service Provisioning Markup Language(SPML)Version 2》,2006.4.1http://www.oasis-open.org/committees/download.php/17708/pstc-spml-2.0-os.zip
4.OASIS.《Service Provisioning Markup Language(SPML)Version 1.0》,2003.6.3http://www.oasis-open.org/committees/download.php/3032/cs-pstc-spml-core-1.0.pdf
5.OpenSPML Toolkit网址http://www.openspml.org/
6.Apache HttpClient网址http://hc.apache.org/
7.XFire应用pjl-comp-filter示例网址http://xfire.codehaus.org/GZip+Support曾宁生;刘涛;康缪健;吴冬;庞海东;陆志强;王晓峻
三、发明内容
本发明目的是提出一种基于SPML身份管理协议实现数据传送高效压缩方法,本发明通过结合使用HttpClient、gzip工具包,实现了SPML请求/响应消息的双向高效压缩,显著提高了传输效率和配置管理效率。应用于联创4A-Securer产品中,应用与在身份服务器端与代理端间通信技术领域中。
a)技术方案是,基于SPML身份管理协议实现数据传送高效压缩方法:
1、SPML模型
SPML是广为使用的请求/响应模型的一个实例,即客户端提交SPML请求描述操作,服务端接收请求并完成操作后返回SPML响应。图2是SPML 1.0的域模型(附件1):
SPML 2.0增加了PST对PSO的引用,如图3所示:
RA(Requesting Authority)是提交SPML请求的软件组件,可视为客户端。PSP(Provisioning Service Point)是响应SPML请求的软件组件,可视为服务端。PST(Provisioning Service Target)是SPML请求所含动作的最终执行点。PSO(Provisioning Service Object)是SPML请求所含动作的操作对象。
以在身份管理与访问控制系统4A-Securer V2.0中修改Linux系统中一个账号密码为例说明SPML各组件:4A-Securer的身份服务作为RA,代理服务作为PSP,Linux系统作为PST,账号作为PSO。
SPML为增、删、改、查和批处理等操作定义了请求/响应的消息封装格式。在消息实例中,如accountRes,可以有多个,不同的是属性result.info、result.id的值,result.info可能为空串或提示信息,result.id形如x/test080530x,x为自然数。
消息内容相似度很大,适合压缩。
SPML规范没有正式规定压缩方法,而其Java开源实现OpenSPML Toolkit(附件3-5)也没有提供。下一节在OpenSPML Toolkit的基础上描述SPML压缩方法。
2、SPML压缩
SPML规范的Java开源实现OpenSPML Toolkit提供了SPML客户端、SPML服务端和消息处理三部分应用程序接口API,SPML客户端API作用在于将Java对象表示的SPML请求转换成SPML消息发向SPML服务端,并将SPML服务端返回的SPML响应转换成Java对象;SPML服务端的主体是一个servlet和一个消息处理接口,servlet接收SPML请求后转换成Java对象,并以其为输入参数调用消息处理接口,最后将接口返回的Java对象转换成SPML响应后发回SPML客户端。消息处理的作用是实现SPML消息和Java对象的相互转换。
使用HttpClient工具包Apache HttpClient 3.1,用它代替OpenSPML SPML客户端的消息发送功能,并增加压缩/解压功能。实现了SPML请求/响应消息的双向高效压缩,Apache HttpClient 3.1是业内成熟有效的Http客户端(附件6)。
Web Services开发框架XFire[7]应用相对广泛,它使用了过滤器pjl-comp-filter1.6.4实现了GZIP支持。本发明用pjl-comp-filter实现SPML消息的压缩/解压功能。
本发明有益效果:身份管理系统普遍运行于大规模异构网络环境中。而涉及批量操作和查询操作的SPML消息文本一般很大,在外部网络上传输较慢。本发明通过结合使用HttpClient、gzip工具包,实现了SPML请求/响应消息的双向高效压缩,显著提高了传输效率和配置管理效率。
实验结果,先定义如下概念:SPML请求压缩比=压缩前SPML请求字节数/压缩后SPML请求字节数。SPML响应压缩比=压缩前SPML响应字节数/压缩后SPML响应字节数。以批量操作为例,变化accountReq的个数,根据pjl-comp-filter的统计数据,得出图4所示SPML消息压缩比图。
另外,诸如查询一个系统上的所有账号一类查询操作,响应消息内容一般也很大且具有较高相似度,其压缩方法与批量操作相同,在此不赘述。与压缩前相比,SPML请求、响应压缩比可达50∶1。在100M局域网内,传输效率大约提高40倍左右。
四、附图说明
图1基于SPML身份管理架构
图2 SPML 1.0域模型
图3 SPML 2.0域模型
图4 SPML消息压缩比图
五、具体实施方式
SPML模型,SPML是广为使用的请求/响应模型的一个实例,即客户端提交SPML请求描述操作,服务端接收请求并完成操作后返回SPML响应。图2是SPML 1.0的域模型(附件4)。SPML为增、删、改、查和批处理等操作定义了请求/响应的消息封装格式,下面给出批量删除账号的消息实例。
批量删除账号请求:
   <s:Envelope xmlns:s=’http://schemas.xmlsoap.org/soap/envelope/’>
   <s:Body>
   <spml:batchRequest xmlns:spml=’urn:oasis:names:tc:SPML:1:0’
xmlns:dsml=’urn:oasis:names:tc:DSML:2:0:core’
     requestID=’1’processing=’urn:oasis:names:tc:SPML:1:0#sequential’
onError=’urn:oasis:names:tc:SPML:1:0#resume’>
     <spml:identifier type=’urn:oasis:names:tc:SPML:1:0#GUID’>
       <spml:id>deleteSlaveAccountBatch</spml:id>
     </spml:identifier>
     <spml:extendedRequest>
       <spml:attributes>
         <dsml:attr name=’sa.name’>
           <dsml:value>test0805301</dsml:value>
         </dsml:attr>
       </spml:attributes>
    </spml:extendedRequest>
    <spml:batchAttributes>
      <dsml:attr name=’res.name’>
        <dsml:value>oracle38</dsml:value>
      </dsml:attr>
      <dsml:attr name=’res.id’>
        <dsml:value>13</dsml:value>
      </dsml:attr>
    </spml:batchAttributes>
 </spml:batchRequest>
 </s:Body>
 </s:Envelope>
其中,
 <spml:extendedRequest>
  <spml:attributes>
    <dsml:attr name=’sa.name’>
      <dsml:value>test0805301</dsml:value>
    </dsml:attr>
   </spml:attributes>
</spml:extendedRequest>
不妨称为accountReq,可以有多个,不同处在于属性sa.name的值,为下面叙述方便不妨用test080530x表示,x为自然数。
批量删除账号响应:
   <?xml version=’1.0’encoding=’UTF-8’?>
   <SOAP-ENV:Envelope
     xmlns:SOAP-ENV=’http://schemas.xmlsoap.org/soap/envelope/’>
   <SOAP-ENV:Body>
   <spml:batchResponse xmlns:spml=’urn:oasis:names:tc:SPML:1:0’
xmlns:dsml=’urn:oasis:names:tc:DSML:2:0:core’
    result=’urn:oasis:names:tc:SPML:1:0#success’>
    <spml:extendedResponse result=’urn:oasis:names:tc:SPML:1:0#success’>
      <spml:attributes>
        <dsml:attr name=’result.info’>
          <dsml:value></dsml:value>
        </dsml:attr>
        <dsml:attr name=’result.id’>
          <dsml:value>1/test0805301</dsml:value>
        </dsml:attr>
     </spml:attributes>
  </spml:extendedResponse>
</spml:batchResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
其中,
<spml:extendedResponse result=’urn:oasis:names:tc:SPML:1:0#success’>
    <spml:attributes>
      <dsml:attr name=’result.info’>
        <dsml:value></dsml:value>
      </dsml:attr>
      <dsml:attr name=’result.id’>
        <dsml:value>1/test0805301</dsml:value>
      </dsml:attr>
    </spml:attributes>
</spml:extendedResponse>
本发明用pjl-comp-filter实现SPML消息的压缩/解压功能。
1)SPML客户端压缩/解压功能实现
首先定义类GZIPStringRequestEntity,以之实现SPML请求的压缩。
class GZIPStringRequestEntity extends
org.apache.commons.httpclient.methods.StringRequestEntity{
private byte[]content;
public GZIPStringRequestEntity(String content)
    throws java.io.UnsupportedEncodingException{
  super(content);
  this.content=content.getBytes();
}
public GZIPStringRequestEntity(String content,String contentType,
         String charset)throws java.io.UnsupportedEncodingException{
  super(content,contentType,charset);
  String checkedCharset=this.getCharset();
  if(checkedCharset!=null)
    this.content=content.getBytes(checkedCharset);
  else
    this.content=content.getBytes();
}
  public void writeRequest(java.io.OutputStream out)throws
java.io.IOException {
  if(out==null){
    throw new IllegalArgumentException(
                   ″Output stream may not be null″);
}
  java.util.zip.GZIPOutputStream zipOs=
new java.util.zip.GZIPOutputStream(out);
  zipOs.write(this.content);
  zipOs.finish();
}
public long getContentLength(){
   return-1;//强行使用chunked编码,即Transfer-Encoding:chunked
}
实现压缩后SPML请求发送、压缩后SPML响应接收的关键语句:
//以url表示SPML服务端URL
org.apache.commons.httpclient.methods.PostMethod post=
new org.apache.commons.httpclient.methods.PostMethod(url);
//以spmlReq表示要发送的SPML请求
post.setRequestEntity(new GZIPStringRequestEntity(spmlReq));
//告知pjl-comp-filter:用gzip压缩SPML响应
post.setRequestHeader(″Accept-Encoding″,″gzip″);
//告知pjl-comp-filter:客户端已用gzip压缩SPML请求
post.setRequestHeader(″Content-Encoding″,″gzip″);
org.apache.commons.httpclient.HttpClient client=
new org.apache.commons.httpclient.HttpClient();
//用HttpClient发送压缩后的SPML请求
int status=client.executeMethod(post);
//发送请求成功后,接收/解压压缩后的SPML响应
if(status==org.apache.commons.httpclient.HttpStatus.SC_OK){
  //spmlResBuf存储SPML请求
  StringBuffer spmlResBuf=new StringBuffer();
  java.io.InputStream in=post.getResponseBodyAsStream();
java.io.BufferedReader br=
new java.io.BufferedReader(
new java.io.InputStreamReader(
               new GZIPInputStream(in)));
String tempbf;
while((tempbf=br.readLine())!=null){
      buffer.append(tempbf);
}
br.close();
in.close();
}
流程说明:
1、接受SPML发送请求。
2、告知pjl-comp-filter采用gzip压缩SPML请求/和SPML响应。
3、采用GZIP压缩SPML请求。
4、用HttpClient发送压缩后的SPML请求。
5、发送请求成功后,用HTTPClient接受SPML响应。
6、用GZIP解压缩SPML响应。
2)SPML服务端实现压缩/解压功能说明
1、定义类SPMLIMServerServlet,以之接收SPML请求。SPMLIMServerServlet继承自org.openspml.server.SOAPRouter,并覆盖了父类中的getPost方法,代码如下:
public String getPost(javax.servlet.http.HttpServletRequest req)
throws java.io.IOException{
javax.servlet.ServletInputStream is=req.getInputStream();
java.io.BufferedReader br=
new java.io.BufferedReader(new java.io.InputStreamReader(is));
String tempbf;
StringBuffer buffer=new StringBuffer();
while((tempbf=br.readLine())!=null){
  buffer.append(tempbf);
}
return buffer.toString();
}
2、部署pjl-comp-filter以实现SPML请求的解压和SPML响应的压缩,即在web.xml中增加:
<filter>
<filter-name>CompressingFilter</filter-name>
<filter-class>
com.planetj.servlet.filter.compression.CompressingFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>CompressingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
SPMLIMServerServlet作为Servlet部署,和org.openspml.server.SOAPRouter类似,不赘述。
上述程度使用HttpClient工具包Apache HttpClient 3.1,用它代替OpenSPML SPML客户端的消息发送功能,并增加压缩/解压功能。
同时使用Web Services开发框架使用了过滤器pjl-comp-filter 1.6.4实现了GZIP实现SPML消息的压缩/解压功能。

Claims (2)

1、基于SPML身份管理协议实现数据传送高效压缩方法:其特征是以SPML规范的Java开源实现OpenSPML Toolkit提供SPML客户端、SPML服务端和消息处理三部分应用程序接口API,SPML客户端API作用在于将Java对象表示的SPML请求转换成SPML消息发向SPML服务端,并将SPML服务端返回的SPML响应转换成Java对象;SPML服务端的主体是一个servlet和一个消息处理接口,servlet接收SPML请求后转换成Java对象,并以其为输入参数调用消息处理接口,最后将接口返回的Java对象转换成SPML响应后发回SPML客户端。
2、根据权利要求1所述的基于SPML身份管理协议实现数据传送高效压缩方法:其特征是用过滤器pjl-comp-filter实现SPML消息的压缩与解压。
CN200910027786A 2009-05-21 2009-05-21 基于服务配置标记语言身份管理协议实现数据传送高效压缩方法 Pending CN101645885A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910027786A CN101645885A (zh) 2009-05-21 2009-05-21 基于服务配置标记语言身份管理协议实现数据传送高效压缩方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910027786A CN101645885A (zh) 2009-05-21 2009-05-21 基于服务配置标记语言身份管理协议实现数据传送高效压缩方法

Publications (1)

Publication Number Publication Date
CN101645885A true CN101645885A (zh) 2010-02-10

Family

ID=41657605

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910027786A Pending CN101645885A (zh) 2009-05-21 2009-05-21 基于服务配置标记语言身份管理协议实现数据传送高效压缩方法

Country Status (1)

Country Link
CN (1) CN101645885A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014055511A1 (en) * 2012-10-04 2014-04-10 Samplify Systems, Inc. Data compression profiler for configuration of compression
CN106776730A (zh) * 2016-11-17 2017-05-31 中国银行股份有限公司 一种基于java语言的中文压缩解压缩方法及装置
CN107770225A (zh) * 2016-08-22 2018-03-06 北京京东尚科信息技术有限公司 一种 webService访问系统和访问webService的方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014055511A1 (en) * 2012-10-04 2014-04-10 Samplify Systems, Inc. Data compression profiler for configuration of compression
US9118345B2 (en) 2012-10-04 2015-08-25 Altera Corporation Data compression profiler for configuration of compression
CN107770225A (zh) * 2016-08-22 2018-03-06 北京京东尚科信息技术有限公司 一种 webService访问系统和访问webService的方法
CN106776730A (zh) * 2016-11-17 2017-05-31 中国银行股份有限公司 一种基于java语言的中文压缩解压缩方法及装置
CN106776730B (zh) * 2016-11-17 2020-01-17 中国银行股份有限公司 一种基于java语言的中文压缩解压缩方法及装置

Similar Documents

Publication Publication Date Title
CN108650262B (zh) 一种基于微服务架构的云平台扩展方法及系统
US7178163B2 (en) Cross platform network authentication and authorization model
TW527794B (en) Data sending and receiving structure among application programs, data sending and receiving method among application programs and computer readable recording medium for recording program executing sending and receiving method among application programs
US8639950B2 (en) Systems and methods for management of secure data in cloud-based network
US7743250B2 (en) Traffic manager for distributed computing environments
CN103117983B (zh) 数据服务请求应答方法和数据服务协议栈的设计方法
Zhao et al. Management of API gateway based on micro-service architecture
KR100644616B1 (ko) 마크업 랭귀지 기반의 단일인증 방법 및 이를 위한 시스템
WO2011150818A1 (zh) Soapapi转换为restapi的公共消息头承载方法及装置
US20060168646A1 (en) Security for external system management
JP4858360B2 (ja) 情報提供装置
JP2006520941A (ja) 情報アクセスに関するシステム及び方法
WO2020253401A1 (zh) 文件管理方法、装置、系统、设备及计算机可读存储介质
JP2002334056A (ja) ログイン代行システム及びログイン代行方法
CN103001945A (zh) 一种多元化资源标识安全访问方法
WO2008061113A2 (en) System and method for utilizing xml documents to transfer programmatic requests in a service oriented architecture
CN101645885A (zh) 基于服务配置标记语言身份管理协议实现数据传送高效压缩方法
EP2400716B1 (en) Resource access proxy for efficient access to sensor resources
Xuefu et al. Design and implementation of web Instant Message System based on XMPP
KR20190000817A (ko) M2m 시스템에서 메시지를 처리하는 방법 및 그 장치
US8499031B1 (en) Markup language messaging service for secure access by edge applications
WO2023231681A1 (zh) 账号创建方法、物联网多租户系统、设备、程序和介质
CN111861383A (zh) 一种线上居家办公安全平台
CN116455613A (zh) 一种基于OpenResty跨语言异构微服务统一鉴权优化方法
US7318103B1 (en) XML in the MASP client-server protocol

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Open date: 20100210