Workfine与E-Office单点登录对接方案

方案流程图

Workfine与E-Office单点登录对接方案

插件安装说明

登录Workfine控制台,在插件中心导入E-Office(以下简称EO)单点登录支持插件后重启Workfine服务即可。

下载地址:【本地下载】【备用下载

E-Office配置说明

登录管理员用户,在菜单栏中进入全部应用=>设置管理=>系统管理=>菜单配置,添加一个菜单Workfine

Workfine与E-Office单点登录对接方案

在菜单Workfine下再建立一个子菜单,配置如下:

Workfine与E-Office单点登录对接方案

点击路径右侧的设置按钮,可以配置相关参数。具体配置说明见下一章节。

Workfine与E-Office单点登录对接方案

URL和参数说明

EO根据加密规则生成URL,用户点击后跳转到Workfine并进行校验、账号绑定、颁发token实现登录操作。

URL规则如下(需要注意大小写):

https://workfine_url:port/#/ExtLogin?sid=solution_id&scheme=EOffice&uid=user_id&sign=sign×tamp=timestamp&redirect=route_param

参数名称说明备注
workfine_urlWorkfine的访问地址注意区分内外网
portWorkfine的访问端口默认5000
sid应用编号可以在设计端=>系统设置的最下方找到
scheme登录方案固定值:EOffice
uid用户idEO内当前登录用户的ID
sign参数签名#userId#accesskey#timestamp#
其中,accesskey内容由自己决定,英文+数字即可
timestamp时间戳毫秒时间戳
redirect需要访问的业务路由可以从应用端截取,需要进行urlencode

签名方案原理

EO将用户编号、时间戳和预留的访问key进行摘要计算,生成签名后添加到URL中再访问。Workfine的SSO模块收到参数后将提供的编号、时间戳与本地保留的key进行同样的计算。最后比对是否一致,从而验证请求是否合法,参数是否被篡改。

验证合法后还需要将时间戳与服务器当前时间作对比,如果时间差超过10秒钟,则该请求不合法,直接作废。

签名需要使用user_id+accesskey+timestamp组合后取md5来获取。

js示例代码:

Workfine与E-Office单点登录对接方案
function sign(userid){
const accesskey='accesskey'
let str="+userld
str+=accesskey
str+=Math.round(new Date().getTime()/1000)
return md.5(str)//md5()默认js不支持,可以从github获取

JavaScript MD5下载地址:https://github.com/blueimp/JavaScript-MD5

登录插件配置说明

EO登录插件基于Workfine扩展,用于实现本方案的单点登录功能。

其中有一些参数需要设置,配置文件地址为:Workfine安装目录/server/appsetting.json

所有配置属性在EOfficeAuthenticationOptions节点,如果不存在则新建一个。该节点下的可配置属性如下表:

参数名称说明备注
HashAlgorithm摘要计算方式默认为md5,不需要调整
HashSalt访问key约定好的accesskey即可
SlidingSeconds过期时间链接基于时间戳的过期时间,单位秒。不设置则默认为60秒过期

配置完后效果如图:

Workfine与E-Office单点登录对接方案

绑定错误的处理

目前绑定错误需要在数据库中进行解绑操作。

在workfine帐套所在数据库tb_sys_identity_user_claim表里,根据EO的用户编号查找claim_value相等的那条记录,删除即可

© 版权声明
THE END
喜欢就点赞吧
分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容