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

一、概述

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

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

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

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

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

浏览器的现实如下图:

以上信息告诉我们,SOAP-Gateway实际上是一个采用AXIS2框架实现的Web Service。单击Services,我们可以查到它是由UserService、RoomService和FileService三个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-Gateway的SSO原理

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

返回SessionID:6a875b01f7eaeaa334e84458d29793e0

第二步:调用loginUser方法

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

其中:SID是第一步时返回的SessionID,username/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接口,而是通过OpenMeetings的Servlet页面调用的,该servlet只是一个演示,并未完全实现SOAP-Gateway,很多SOAP中的方法并没有实现,在OpenMeetins的某些版本中,甚至并未实现第三步的setUserObjectAndGenerateRoomHash方法,如果我们坚持想采用servlet测试,可以将SOAP实现类中的setUserObjectAndGenerateRoomHash方法照搬到Servlet中将其补全。

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

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

  1. 如何实现多源异构系统数据整合?

    在信息化建设过程中,由于各业务系统建设和实施数据管理系统的阶段性.技术性以及其它经济和人为因素等因素影响,导致企业在发展过程中积累了大量采用不同存储方式的业务数据,包括采用的数据管理系统也大不相同,从 ...

  2. RDIFramework.NET-.NET快速信息化系统开发整合框架 【开发实例 EasyUI】之产品管理(MVC版)...

    RDIFramework.NET-.NET快速信息化系统开发整合框架 [开发实例 EasyUI]之产品管理(MVC版) RDIFramework.NET-.NET快速开发整合框架 [开发实例]之产品管 ...

  3. 信息孤岛影响_多系统流程整合,打破企业信息孤岛

    信息孤岛是一个普遍的问题,不仅企业内各环节存在着信息孤岛,企业间也存在信息孤岛. 企业信息孤岛有哪些弊端? 从企业的自身原因分析,前期的信息化建设大多缺乏长远与统筹规划,不同阶段只考虑各种局部需求,造 ...

  4. php scm系统,ERP CRM SCM 三大系统的整合

    ERP.CRM.SCM 3大系统的整合是必然发展的趋势,以下笔者将探讨具体整合的内容及如何实现整合. 1 ERP.CRM.SCM需要整合的部分 ①ERP与CRM整合的部分有: 客户管理:ERP和CRM ...

  5. springboot项目系列-论坛系统06整合rabbitmq实现异步发邮件

    springboot项目系列-博客系统06整合rabbitmq实现异步发邮件 今天突发奇想,既然会了rabbitmq为何不用,之前的注册发邮件功能是使用springboot的异步任务做的,但是想想以后 ...

  6. 配电室智能网关实现智能配电室监控系统

    当今社会,电力的重要性不言而喻,在变电站.配电室等一些场景中放置有大量的电气设备,为保障这些设备正常运行,以免因为这些设备故障导致无法正常进行电力供应,严重影响生产和生活,我们需要运行一套智能配电室监 ...

  7. MODBUS转profibus网关在运输机集控系统中的应用

    本系统中主要介绍MODBUS转profibus网关YT-PB-01在带输机集控系统中的应用. 本系统配置一台上位监控计算机,安装有西门子Wincc组态监控软件,安装在胶带机尾部集中控制室内:4台分别配 ...

  8. 边缘计算网关下山体滑坡监测系统解决方案

    山体滑坡是指山体斜坡上某一部分岩土在重力(包括岩土本身重力及地下水的动静压力)作用下,沿着一定的软弱结构面(带)产生剪切位移而整体地向斜坡下方移动的作用和现象. 南方夏季雨水较多,因此在一些山地地区极 ...

  9. 5G边缘计算网关助力山体滑坡监测系统

    山体滑坡是指山体斜坡上某一部分岩土在重力(包括岩土本身重力及地下水的动静压力)作用下,沿着一定的软弱结构面(带)产生剪切位移而整体地向斜坡下方移动的作用和现象. 南方夏季雨水较多,因此在一些山地地区极 ...

最新文章

  1. 骑士人才linux伪静态,骑士人才CMS伪静态规则
  2. 计算机解译地学应用效果,不同的遥感解译方法在地表覆盖分类信息提取中的应用研究...
  3. 委婉的拒绝offer
  4. java observer模式_Java观察者模式(Observer)详解及应用
  5. mac怎么设置默认浏览器 mac默认浏览器设置方法
  6. 唯有自己变得强大_只有自己变得强大,才够让你的人生一帆风顺
  7. BZOJ 1007 [HNOI2008]水平可见直线 ——半平面交 凸包
  8. tomcat7的安装与maven安装
  9. 关于影响NodeManager执行MR任务constainer数量的设置问题
  10. 网易云音乐(纯CSS实战)
  11. javascript指定日期增加自然月份(有闰年2月判断)
  12. pfSense®与OPNsense®技术比较
  13. STATUS of v$archive_dest的一些情况
  14. Android中Home键的监听和拦截
  15. 【第17天】Java集合(四)---Sorted接口实现的TreeSet集合及单值类型集合总结
  16. AWS创建用户、角色、策略
  17. 什么是日活,什么是月活,统计了有什么意义?
  18. 极客巅峰2021 web opcode
  19. MySQL复制跳过错误--slave_skip_errors、sql_slave_skip_counter、slave_exec_mode
  20. 使用集集快速添加公众号预约功能

热门文章

  1. 数据分析、数据挖掘的本质
  2. QT中Json的使用方法(类和json字符串相互转换的方法)
  3. 华为面向5G的室内覆盖数字化关键技术要素
  4. cad怎么绘制大样图_CAD如何绘制完整的建筑图
  5. Android源码解析触碰机制
  6. [WPF] 使用 Visual Studio App Center 持续监视应用使用情况和问题
  7. 大数据时代社交网络个人信息安全研究
  8. C语言 程序 复制,C语言实现文件复制
  9. 3d效果图制作傻瓜软件_据说做装修设计的都用这个傻瓜式设计软件
  10. 精彩回顾 | 2021世界人工智能大会圆满落幕,容智信息助力拓展企业数字生产力