需求描述
- 在SSO单点登录系统登录以后,可以直接进入PLM,无须二次登录。
- 单点登录系统的用户信息更新后,可以自动同步给PLM(入职,离职,姓名,密码等)
- PLM退出登录后,回到单点登录系统登录页面,而不是PLM的登录页面。
适用Agile版本
9.3.6.18或之前版本,后续的新版本尚未实施,不确定是否支持。
实现前提
- 要实现单点登录,PLM需要和单点登录系统联调开发才能实现。无法通过简单配置一个单点登录地址实现。
- PLM的用户账号和密码必须和SSO平台的设置成一样,才能正确登录。
- 如果PLM用户数量不多,可以考虑管理员人工维护PLM用户信息。
- 如果想要实现自动用户信息同步,需要联调开发用户信息同步程序。
- 当新增用户,用户离职,用户信息变更等场景下自动同步用户信息给PLM。
- 自动同步之后,PLM的修改密码功能将失效。即使改了也会被覆盖。
- LDAP域集成。这种方式为AgilePLM的标准功能,首先需要搭建LDAP环境,做好之后还能自动屏蔽修改密码功能。
- PLM需要获取到要登陆的用户账号和密码才能实现单点登录。密码获取方式有如下几种
- 统一密码。即所有用户同一个密码。
- 如果PLM登录密码和审批密码设置成了不一致,修改审批密码必须输入登录密码。但登录密码设置成了统一的,不能随意泄露给用户。故此种场景不支持。
- 动态密码。登录时将实际登录的用户密码传给PLM。
- 可以在URL或者接口中传输密文密码给PLM,提供解密方式。不支持无法解密的算法,例如:MD5
- PLM可以调用统一用户平台接口获取用户账号和密码
- 参考上文,如果实现了用户信息同步,登录时可以从中间表自动获取密码。
- 统一密码。即所有用户同一个密码。
- 实施时需要获得修改Agile源代码权限,如果用户升级Agile之后需要重新部署。
- 支持屏蔽AgilePLM退出之后的登录界面,暂不支持屏蔽Agile登录页面。
- 单点登录系统用户退出登录后,暂不支持自动退出Agile用户(仍可继续操作)。
实现思路
- 如上文所述,接入SSO之前,首先需要确保PLM的用户账号密码和SSO平台的一致。
- 用户在SSO平台登录成功之后,进入SSO主页,然后继续点击PLM登录入口。
- PLM登录入口是定制开发Web程序的URL,此时需要将登录用户的账号密码传给PLM
- Web程序获取到用户账号和密码之后,模拟PLM登录,进入PLM首页。
实现步骤
用户信息同步
如果要实现用户信息自动同步,需要沟通好同步用户的字段与同步规则。
比较常见的字段如下:用户工号,用户姓名,密码,邮箱,手机号等。其中用户密码需要提供解密方式。
如果需要同步岗位,部门,直属领导等信息则需要进一步讨论业务规则。
全量同步
- 单点登录系统提供查询接口或者视图,PLM开发定时任务调用接口或者视图。
- 将获取到的全量用户信息后与自己数据库中的信息进行比对。并更新自己的用户信息。
- 如果用户不存在则创建。存在则修改
- 新同步过来的用户将赋予默认基础角色。
- 方案优点
- 开发周期较短。
- 功能上线即可同步全量用户信息。
- 方案缺点
- 由于每次都要同步全量用户信息,同步时间较长。随着用户数量逐渐增多同步时间也会变长。
- 同步延迟。由于是定时任务定期同步且单次同步时间较长,存在一定的同步间隔。
增量同步
- PLM提供用户信息保存接口,支持用户信息新增和修改。
- 单点登录系统进行定制开发,当用户信息变更时调用PLM的用户信息保存接口。
- 新同步过来的用户将赋予默认基础角色。
- 方案优点
- 同步数据量较少,单词同步时间较短。每次只同步发生了变更的用户。
- 同步延迟较低。
- 方案缺点
- 双方都需要定制开发且需要联调,开发周期较长。
- 维护成本较高,如果同步时PLM系统接口不通或异常,需要管理员人工干预。
- 程序首次上线时,需要额外的方式同步全量用户信息。
Web项目模拟登录
新建SpringBoot Web工程,创建controller接收URL请求。
在controller中配置好URL映射,当用户在企业门户主页点击PLM图标时。单点登录平台会将URL和token传过来。
解析token或者url中附带的用户信息。通过和SSO开发方沟通好的方式获取账号和密码。
将用户名和密码,传到页面的form表单中,然后提交表单,模拟Agile登录
AgilePLM登录界面重定向
目前这个步骤是客户公司的IT部实施的。通过全局的链接地址重定向功能,将AgilePLM的登录地址重定向到统一登录入口的登录地址。还有其他系统需要集成单点登录的也需要做相同配置,例如:CRM,MES,EHR等。
点击退出按钮之后会回到登录页面。这个界面目前可以通过修改Agile源码的方式修改。