企业微信单点登录自建系统过程记录
项目上接到一个需求,为方便员工登录各种内部系统,统一以企业微信为入口,在企业微信面板中增加系统跳转链接实现单点登录。
整体思路比较简单,大致如下:
1.由于自建系统和企业微信的用户ID不同,所以需要建立一张用户对应表,通过企业微信API获取用户列表将两个系统的用户关联起来。
2.在企业微信管理后台填写系统跳转链接,跳转时url会增加code参数,这个code就是当前登录用户的加密字符串。
3.在自建系统中获取到code参数后调用企业微信获取成员信息API,返回结果中包含企业微信用户ID。
4.拿到企业微信用户ID后到用户对应表中查找,如果有对应用户记录,则使用自建系统的用户ID执行登录操作。
接下来是具体实现步骤:(文中wwlocal.qq.com需指向企业微信的服务器地址)
1.首先到企业微信的接口配置参数页面查看相关信息,红框部分是关键信息,调用API时需要用到:
2.调用获取部门成员详情接口获取员工列表,总共需要三个参数:access_token、department_id、fetch_child,其中access_token需要单独获取
3.获取access_token,这个在文档的开头有介绍
调用获取token的接口,需要两个参数:corpid、corpsecret,这时候就用到了第一步截图中的信息,结果返回后为避免频繁调用,建议将token缓存,有效期一般为2小时。
4.员工列表接口请求完成后与系统用户做对比进行关联操作,然后进行下一步,在企业微信管理后台添加自建系统跳转链接,详细内容请查看开发文档中-OAuth2.0网页授权 章节。
5.通过企业微信面板登录管理后台:
登录后可看到如下页面:
首先在网页授权及JS-SDK中设置可信域名,直接写ip即可,有端口号的需要加上,不需要加http头
然后到自定义菜单中配置需要跳转的系统链接:
这里的链接需要按照开发文档 OAuth2.0网页授权章节中的关键步骤部分,链接默认打开的是内置的浏览器,如果需要打开外部默认浏览器需要增加参数:&target=out
6.跳转后的效果如下,code参数就是我们需要的信息,这里的code只能使用一次且有效时间为5分钟:
OAuth2.0流程图如下:
7.最后一步,需要做的就是用拿到的code参数调用获取成员信息接口,根据返回用户信息与系统用户对比进行后续登录等操作。
以上就是企业微信单点登录自建系统的整个过程,特此记录以作回顾,分享给有需要的同学们,祝大家生活美好,工作顺利!
2020.6.19 北京昌平