作者:黎世江 | 来源:互联网 | 2023-10-11 09:33
需求描述
要求PLM集成SSO(单点登录),在SSO统一登录以后可以直接进入PLM,无须二次登录。
适用Agile版本:9.3.2+
总工作量:10~30人天
实现前提
PLM必须能够获取到用户的明文密码才能实现单点登录。
如果公司信息安全要求,密码存储和传输必须使用密文,可以提供给PLM解密方式。不要使用无法解密的算法,例如:MD5
如果不能提供PLM用户密码,那PLM必须使用固定密码才能实现单点登录。
实现思路
- 接入企业SSO之前,需要有一个公共平台统一维护用户账号。然后同步给其他系统。
- PLM同步统一用户平台的数据。确保用户信息变更后也可以自动登录。
- 创建Web项目。接收SSO登录请求,解析token,模拟PLM登录。
- 全局配置URL重定向,将第三方系统登录地址重定向到统一登录入口。
实现步骤
组织架构同步
这一块的工作量占的比重较大,需要根据同步内容和同步规则具体评估工时,还涉及系统联调。
首先需要和需求提出方确认好要同步哪些对象哪些字段。比较常见的是同步用户信息,例如:用户工号,用户姓名,密码,邮箱,手机号等。其中用户密码涉及加密,需要提供解密方式(下面会详细介绍)。但也有的公司还会要求同步岗位,部门,直属领导等信息。
用户信息同步
目前的实现方式如下:
开发定时任务定时全量同步。需要单点登录系统提供接口或者视图,第三方系统获取全部用户信息后进行比对并更新自己的用户信息。这种方式用户信息同步存在滞后问题,而且如果用户信息比较多,单次同步时间较长。优点是开发周期较短而且功能上线时可以全量同步。
开发接口增量同步。当用户信息存在变更时,需要单点登录系统主动推送增量变更信息推送给第三方系统。这种实现方式同步延迟较低,开发周期较长,建议采用MQ实现。
LDAP域集成。这种方式首先需要搭建LDAP环境,AgilePLM有标准功能支持,做好之后还能自动屏蔽修改密码功能。
无论采用哪种方式,一般新同步的用户权限只能默认基础角色,需要管理员额外在PLM单独配置其他权限。实现时,可以考虑创建一个基础用户,然后新用户从这个用户另存。
密码同步
密码同步一般2个实现方案。单点登录系统必须提供明文密码。AgilePLM不支持密文密码。
- 所有用户设置统一的固定密码,例如:P@ssw0rd。
- 每个用户密码都不同,同步用户的实际密码。
Web项目模拟登录
新建一个Web工程,需要用到一个controller和html页面。
在controller中配置好URL映射,当用户在企业门户主页点击PLM图标时。单点登录平台会将token通过URL传过来。
解析token中附带的用户名和密码。需要SSO的开发方提供解密方式。
得到用户名和密码之后,传给页面的form表单中,然后直接提交,模拟Agile登录
Weblogic内部校验关闭
部分步骤代码因公司保密协议要求不便给出。需要洽谈合作的可以微信联系(微信号同csdn账号)。
目前已在Agile 9.3.6的很多版本上实施过了。
AgilePLM登录界面重定向
目前这个步骤是客户公司的IT部实施的。通过全局的链接地址重定向功能,将AgilePLM的登录地址重定向到统一登录入口的登录地址。还有其他系统需要集成单点登录的也需要做相同配置,例如:CRM,MES,EHR等。
出于研发信息安全考虑,有的公司虽然集成了单点登录但还是会限制PLM只能从内网才能访问。