实现步骤:
-
添加页签
新建插件sso
按下面的定义,在协同的webapps\seeyon\WEB-INF\cfgHome\plugin\sso目录下新建一个XML文件pluginCfg.xml,例如:
<?xml version="1.0" encoding="UTF-8"?> <plugin> <id>sso</id> <name>单点登录模块</name> <category>11001</category> </plugin>
然后在协同的webapps\seeyon\WEB-INF\cfgHome\plugin\sso\spring目录下新建一个XML文件,如myspace.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans default-autowire="byName"> <!-- id必须唯一 --> <bean id="sinaNewsSpace" class="com.seeyon.v3x.common.thirdparty.ThirdpartySpace" init-method="init"> <!-- id必须唯一或者不写后台自动生成,必须为数字 --> <property name="id" value="-2327812443752403806"/> <!-- 页签上显示的名称 --> <property name="name" value="Sina News"/> <!-- 插件id,必须存在,如果不存在,请按下面的步骤定义一个新的插件 --> <property name="pluginId" value="sso"/> <!-- 第三方系统登录地址,如果合并3、4步,可以省略 --> <property name="loginURL" value="http://xxx.xxx.xxx.xxx/ssologin.jsp"/> <!-- 点击页签要打开的第三方系统页面地址 --> <property name="pageURL" value="http://xxx.xxx.xxx.xxx/main.jsp"/> <!-- 打开方式,值为open时在新窗口打开,为workspace时在协同页面能打开 --> <property name="openType" value="open"/> <!-- 排序号 --> <property name="index" value="4"/> <!-- 授权 accessRoles与accessCheck选择其中一个即可--> <property name="accessRoles"> <list> <value>GeneralStaff</value> </list> </property> <!-- <property name="accessCheck" ref="accessCheck"/> --> </bean> <!-- <bean id="accessCheck" class="com.seeyon.ctp.ext.Tab.TestThirdpartyAccessCheck"></bean> --> </beans>
Note
注意事项:集成的第三方系统,必须先在协同平台的中定义插件
-
myspace.xml参数说明
-
id 唯一标示,这了在XML里必须设置为数字型 name 名称 pluginId 插件ID loginURL 在进入第三方指定页面前,先跳转到loginURL进行握手 第三方系统根据Ticket回调获取协同身份信息,进行单点登录,并注册Ticket和登录用户的映射, 平台带着Ticket跳转到第三方系统的"页面地址" (pageURL) pageURL 第三方指定到达的目的页面。 openType 打开方式 accessRoles与accessCheck OA用户对于第三方页签显示权限,详情请见1.5.1. 页签集成。 -
配置第三方系统,ThirdpartySpace:名称、登录地址、页面地址、打开方式【详情请见1.5.1. 页签集成】
-
登录过程
-
在协同中点击"空间页签"
-
平台产生Ticket,并维护在内存中
-
平台带着Ticket访问第三方系统的"登录地址"(loginURL)进行握手 第三方系统根据Ticket回调获取协同身份信息,进行单点登录,并注册Ticket和登录用户的映射, 平台带着Ticket跳转到第三方系统的"页面地址" (pageURL)
-
-
说明
-
第三方系统完全依赖和信任协同的身份验证,Ticket由协同平台发放
-
第三方系统使用与协同完全相同的登录名或者进行二次开发,自己维护协同登录名与第三方系统用户的映射表
-
如果当前用户已经登录第三方系统,将跳过② ③,直接到第4步,使用相同的Ticket
-
认证ticket/获取身份信息的接口系统提供Servlet:http://a8:80/seeyon/thirdpartyController.do?ticket=**;平台将通过response header的LoginName返回登录名
-
如果第三方回调后认为有异常,请在response header增加名称为SSOLogoutError的信息
-
在上面myspace.xml中(loginURL)获取当前人员登录名例程如下:
-
//获取ticket String ticketinfo=request.getParameter("ticket"); //通过ticket/获取身份信息的接口获取登录信息 String LoginNameUrl="http://127.0.0.1/seeyon/thirdpartyController.do?ticket="+ticketinfo; //通过HttpClientUtil发送请求 HttpClientUtil u = new HttpClientUtil(); //获取登录名 String LoginName=u.getContent(LoginNameUrl).toString();
-
-
第三方系统退出时,要通知协同,地址是http://a8:80/seeyon/thirdparty.do?method=logoutNotify&ticket=**
-
根据情况可将 ③ ④步合并 (省略loginURL)
-