本文档是第三方系统单点登录到EAS(企业应用套件)的二次开发指南,适用于EAS75及以后版本。指南详述了从修改配置文件、获取LTPA Token到实现单点登录的步骤。修改配置包括ssoClient.properties、autoLoginConfig.properties和LTPA密钥文件。获取Token根据第三方系统是否为Java体系有所不同。单点登录通过特定URL实现,并提供了关于登录后跳转、安全注意事项和FAQ的详细说明。
第三方系统单点登录到EAS的二次开发指南
本指南适合EAS75及以后的所有版本.
要从第三方单点登录到EAS,即:从第三方系统中,通过链接直接打开EAS,需要现场进行二次开发。
1、修改配置文件:
涉及单点登录的配置文件有三个:
1.1、 修改ssoClient.properties文件:
将服务端server\profiles\server(1…n)\config\portalConfig目录下的ssoClient.properties文件中的sso.easIsSSOClient参数项的值修改为true;
1.2、 修改autoLoginConfig.properties文件:
打开服务端server\profiles\server(1…n)\config\portalConfig目录下的autoLoginConfig.properties文件,文件内容如下:
其中需要修改的参数如下:
Ø Datacenter: 数据中心代码,即EAS portal要登录的数据中心代码 (即:数据中心编码ID,EAS管理控制台可查看);
Ø authPattern:认证模式,值为BaseTrdLtpaToken,一般默认值是这个,不需要修改
Ø locale:语言项,其中:L1=英文 L2=简体 L3=繁体;
Ø dbType:数据库类型,其中:MS-SQL-SERVER=0 DB2=1 ORACLE=2 pg数据库=5
Ø
1.3、 修改LTPA密钥文件:
打开server\profiles\server(1...n)\config\portalConfig\LtpaToken.properties,文件内容如下:
参数说明:
Ø cookie.domain:与Domino集成时才有用的参数,通常无需关注;
Ø token.expiration:token串的有效时间,这里以分钟为单位,用于校验token串时检查其是否过期,其有效时间从生成token串时Web应用的系统时间开始算起,因此,LTPA认证集成机制要求被集成的各Web应用服务器的系统时间需要保持一致
Ø domino.secret:加密生成token串的密钥,该参数可以是任意指定的一个字符串,没有长度限制,部署实施时注意更换此密钥以增加安全性。
该文件需要在EAS服务器环境和要集成Web应用系统的环境中各保存一份,且密钥必须相同,注意:在EAS服务器环境中该文件的存放路径不用改变,即上述缺省路径即可,在第三方Web应用系统中该文件的存放路径可任意指定 (例如:D:\TrdWebApp\security)。
2、获取Ltpa的 Token:
由于EAS是用JAVA开发的,所以EAS提供的密钥生成的方法是JAVA写的。所以针对第三方系统,我们分成两类:
2.1、java:
第三方是java系统的,这个比较简单,首先将附件中的kingdee_Ltpa.jar包和LtpaToken.properties(注意保证与EAS系统中的文件一致)放置到第三方系统中,然后只需要以下几行代码即可获取token串:
String username = "user";
String password = LtpaTokenManager.generate(username,filePath).toString();
其中:
Ø username :用户名,第三方自己通过安全可靠的方式获取;
Ø filePath:LtpaToken.properties文件放置的路径,包含文件名,请注意文件一定要放在程序能访问的地方;
2.2、非java:
第三方系统为非java体系的,相对来说比较麻烦。主要实现思路是:第三方系统通过调用java类或者写一个java程序,然后由第三方调用这个java程序来生成token,以下是asp.net的样例,仅供参考:
1)、将kingdee_Ltpa.jar解压缩到c:\winnt\java\trustlib目录
2)、在需要的asp页面中,加入如下代码:
<%
set javaObject = GetObject("java: LtpaTokenManager")
password = javaObject. generate (username,filePath)
set javaObject = nothing
%>
username,filePath请参考2.1的说明
该样例仅供参考,详细内容请自行查询参考互联网;
为了安全起见, 第三方系统中,获取用户名和生成token要在同一个接口里做,不能分开在不同类甚至在不同的端做;更不要带着用户名的方式发起http请求去生成token,这样容易被人擅改用户名。
3、第三方单点登录到EAS:
第三方单点登录到EAS,通过打开以下URL来进行:
http://<ip>:<port>/portal/index2sso.jsp?username="+username+"&password="+password+"&redirectTo="+redirectTo
其中参数:
Ø username:用户名;
Ø password:第二章中生成的token;
Ø redirectTo:登录成功后跳转的地址,如果是打开首页,请将值设为双斜杠”//”;也可以是eas系统中的任何可以单独打开的地址(即在登陆后,地址可以单独在浏览器地址栏里输入就可以正常打开的地址),不过地址需要进行html编码,这类方式将不展示eas门户首页,而是直接打开所指定的地址;
Ø /portal:如果是登录老门户,请将/portal改为/easportal;
Ø 增加参数isNotCheckRelogin=true,则针对单点登录跳转不做重复登录判断和提示。建议放在username="+username+"&password="+password之后。
Ø redirectTo地址较长且带有参数,请先对redirectTo进行转码。
PS:
其他应用场景1:第三方系统集成EAS流程审批消息,然后点击审批消息实现登录跳转到EAS新门户的审批页面
消息集成请参考文档:《消息中心接口使用说明_new(3) .doc》
单点登录页面跳转url中的redirectTo为:
“/easweb/webviews/workflow/transferApprove.jsp?AssignmentId=”+taskid
前提:
EAS V7.5需更新补丁PT100667,(建议更新最新补丁)
EAS V8.0需更新补丁PT103285和PT108633,(建议更新最新补丁)
EASV 8.1需更新补丁PT111114,(建议更新最新补丁)
EAS V8.2不需要更新补丁。
其他应用场景2:如果希望在登录成功后,需要打开门户首页,还需要在导航栏直接打开某个指定的页面(该功能80以后支持),有两个前提条件:
1)、必须是新门户;
2)、打开的页面必须在新门户中存在;
实现方式为:
1)、用administrator登录系统,打开“门户管理”,选择放置菜单的地方,可以选择的地方包括顶部导航,首页导航、应用等3个菜单项:
2)、修改要默认打开的页签的编码,注意:编码必须为C-开头;如上图;
3)、redirectTo:值设置为:openpage?num=C-ABC;
4、FAQ:
4.1、中文名无法单点登录的问题
中文在网络传输过程中,需要先进行html编码,且生成token时用的是原用户名,仅在发送请求时先将中文编码后跟token一起发送。以下是js编码的样例:
var encodeName = encodeURIComponent(userName);
4.2、第三方系统是非java体系的,是否可以在EAS上放置一个完成单点登录功能的中转页面,然后第三方直接传递用户名来访问这个页面达到单点登录的功能?
这个做法是可以实现单点登录的,但是存在很大的安全漏洞,那就是:用户可以随意传递一个用户名来访问这个中转页面。客户如果可以忽略这个安全漏洞,可以这么做,但是我们强烈建议不要这么做!!!
4.3、如何在单点登录成功后直接打开一个GUI页面?
该功能在80及以后版本支持。
实现该功能需要先将GUI菜单导入门户中,剩余的具体实现方式请参考第3章中PS里的内容。
4.4、退出登录时如何跳到其它页面,而不是跳到eas指定的页面?
Ø 登录的是portal:
用编辑工具打开\server\deploy\portal.ear\portal.war\res\js\core\ jPortal.core.manager.js:
修改上述红框的地方为指定的页面即可;
Ø 登录的是easportal:
用编辑工具打开\server\deploy\eas.ear\cp_web.war\logout.jsp:
修改上述红框的地方为指定的页面即可;
第三方系统单点登录到EAS的二次开发指南.rar(197.13KB)
推荐阅读