使用SOAP网关实现OpenMeetings 与其它系统的整合

转自:http://lanhy2000.blog.163.com/blog/static/43678608201011952323130/

一、概述

       非常遗憾的是,OpenMeetings没有提供基于第三方SSO(单点登录,例如CAS)系统的集成方法。但它提供了一个Web Service,官网将其命名为SOAP-Gateway,亦即一个基于SOAP的网关。这个Gateway集成了一系列的方法,可以实现从OpenMeetingsFlash客户端(前台)之外完成登录、进入房间、以及部分后台管理(如添加房间、注册新用户等)功能。

 

       调用SOAP-Gateway的前提是你必须知道一个OpenMeetings管理员的登录名和密码。对于调用该Web Service来进行平台管理的应用,这看起来是合理的;但对于那些只是需要让一个游客直接进入某个房间的应用来说,这似乎有点不合理,从安全性角度,管理员的帐户和密码似乎不应该在外部应用中出现。

因此,对于那些只需要集成以游客身份直接进入房间的应用,建议将调用SOAP-Gateway的程序与OpenMeeting部署在一起,仅向外部应用提供一个输入游客姓名的页面url

 

要了解OpenMeetings提供的SOAP-Gateway的接口信息,最简单的方法是把OpenMeetings运行起来,然后在浏览器中输入:

http://localhost:5080/openmeetings/axis2-web/

       浏览器的现实如下图:

使用SOAP网关实现OpenMeetings 与其它系统的整合 - lanhy2000 - 二老板
 

 

       以上信息告诉我们,SOAP-Gateway实际上是一个采用AXIS2框架实现的Web Service。单击Services,我们可以查到它是由UserServiceRoomServiceFileService三个Service组成。再单击某个Service,如UserService或直接键入链接(http://localhost:5080/phmeetings/services/UserService?wsdl),则以wsdl方式显示出它的全部方法和接口。这些方法的说明,可以直接参考OpenMeetings的官网,链接如下:

http://code.google.com/p/openmeetings/wiki/SoapMethods

 

       查看wsdl文件,我们发现,SOAP-Gateway实际实现了三种协议的调用接口(port):SOAP1.1协议、SOAP1.2协议、以及HTTP Get。这给我们的实现和调试带来了很大的方便。

 

二、SOAP-GatewaySSO原理

       SOAP-Gateway提供了几个WebService,其中的UserService是关于用户操作的,集中了getSession(获取SessionID)、AddNewUser(注册新用户)、loginUser(注册用户)、setUserObjectAndGenerateRoomHash(设置用户对象并获取房间Hash)等方法。

 

       SOAP-Gateway实现SSO的步骤有三步:

l         第一步:向系统申请一个SessionID

l         第二步:以管理员身份登录系统(与第一步申请的SessionID绑定)

l         第三步:提交用户名、房间号等信息获得进入某个房间的secureHash(类似加密的票据)

 

获得Hash码之后就可以凭此组装一个直接到某个房间的url了,在浏览器中输入该url就可以直接打开房间界面了。

 

SOAP-Gateway在第三步时会检查用户提交的帐户是否在系统数据库中已存在,若没有,会在用户记录中插入一条新的记录。

 

SOAP-Gateway的实现原理看,它并不是采用CAS那样的认证中心认证并颁发Ticket的方式,看起来倒非常象是采用管理员帐户来担保。这种方式比较适合那种封闭的应用, OpenMeetings只是作为一个平台的某个组件的应用,例如,某个教学系统,需要视频教室,于是集成了一个OpenMeetings

如果把OpenMeetings作为一个独立的应用,需要与一些其它的应用整合,这种方式就需要比较深入的改进了。

 

三、SOAP-Gateway三步走测试

       下面我们启动OpenMeetings的后台服务,来测试一下不同过正常的登录,如何直接进入房间:

 

第一步:调用getSession方法

       http://localhost:5080/openmeetings/MethodGateway?service=userservice&method=getSession

 

    返回SessionID6a875b01f7eaeaa334e84458d29793e0

 

第二步:调用loginUser方法

http://localhost:5080/openmeetings/MethodGateway?service=userservice&method=loginUser&SID=6a875b01f7eaeaa334e84458d29793e0&username=administrator&userpass=yalinwu0829

    其中:SID是第一步时返回的SessionIDusername/userpass是管理员的登录名/密码(注意,必须是管理员的)。

    返回值为1表示登录成功。

 

第三步:调用setUserObjectAndGenerateRoomHash方法

http://localhost:5080/openmeetings/MethodGateway?service=userservice&method=setUserObjectAndGenerateRoomHash&SID=6a875b01f7eaeaa334e84458d29793e0&username=jglee&firstname=JG&lastname=LEE&profilePictureUrl=&email=jglee@nchc.org.tw&externalUserId=&externalUserType=&room_id=9&becomeModeratorAsInt=1&showAudioVideoTestAsInt=1

第三步的参数比较多,具体的含义参见官网上的说明。第三步返回的是一个secureHash字符串,其形式如:6c280410c96e91ea05d25e0b28b10a87。如果不是,则说明调用失败。

有了这个Hash,你就可以组装起一个直接进入房间的url地址。该Hash是与第一步中的SessionID绑定的,一旦Session实效,该Hash也失效了。

 

第四步 组装Url

http://localhost:5080/openmeetings/main.swf8.swf?secureHash=6c280410c96e91ea05d25e0b28b10a87&lzproxied=solo

    在浏览器中输入后,试试你看到了什么?

 

注意:

    上述测试实际上并非直接调用的SOAP接口,而是通过OpenMeetingsServlet页面调用的,该servlet只是一个演示,并未完全实现SOAP-Gateway,很多SOAP中的方法并没有实现,在OpenMeetins的某些版本中,甚至并未实现第三步的setUserObjectAndGenerateRoomHash方法,如果我们坚持想采用servlet测试,可以将SOAP实现类中的setUserObjectAndGenerateRoomHash方法照搬到Servlet中将其补全。

    建议正式应用中采用SOAP客户端的方式来实现,以保证其安全性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值