背景

公司使用企业微信做为办公管理系统。为了公司人事相关研发系统统一授权认证,实现业务系统账号与企业微信挂钩,做到统一管理授权,以此才有了禅道与企业微信集成单点登录研究。

集成步骤

集成步骤大致分为三个部分:

一、企业微信创建配置应用

首先登录企业微信管理,后在“我的企业》企业信息”中获取企业ID

其次在应用管理中创建应用,获取AgentId、Secret等应用接口授权信息。配置可见范围、管理员、及应用主页地址。应用主页地址为禅道sso.php的访问地址。

以及配置开发者接口启用配置开发者接口可信域名,企业微信授权登录授权回调域,及企业可信IP

二、禅道配置第三方应用免密登录

详细配置见官方文档禅道配置第三方应用免密登录

三、禅道配置更新集成登录代码

在禅道的安装目录(例如:/data/zentao/zentaopms/www/)下创建sso.php文件,复制以下代码至sso.php中,并根据一、二点获取的相关信息以下配置内容:

 define('CORPID', "企业ID");define('AGENTID', "应用ID");define('CORPSECRET', "应用Secret");define('ZENTAO_PREURL', "禅道应用跟地址(例如:https://www.zentao.net)");define('ZENTAO_CODE', "禅道第三方应用代号");define('ZENTAO_SECRET', "禅道第三方应用秘钥");

禅道集成登录项目代码如下:

<?phperror_reporting(1);define('IN_SYS', true);define('CORPID', "企业ID");define('AGENTID', "应用ID");define('CORPSECRET', "应用Secret");define('ZENTAO_PREURL', "禅道应用跟地址(例如:https://www.zentao.net)");define('ZENTAO_CODE', "禅道第三方应用代号");define('ZENTAO_SECRET', "禅道第三方应用秘钥");function HTTPGET($url){//初始化$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_TIMEOUT, 120);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);//执行请求$content = curl_exec($ch);curl_close($ch);$content = is_json($content) ? json_decode($content,true) : $content;return $content;}function HTTPPOST($url, $parm){//初始化$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_TIMEOUT, 120);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_POST, 1);$json_data = json_encode($parm);curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);//执行请求$content = curl_exec($ch);curl_close($ch);$content = is_json($content) ? json_decode($content,true) : $content;return $content;}function is_json($string) {json_decode($string);return (json_last_error() == JSON_ERROR_NONE);}$code = $_GET["code"];if($code == null || $code == "" ) {$oauthUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . CORPID . "&redirect_uri=" . ZENTAO_PREURL . "/sso.php&response_type=code&scope=snsapi_privateinfo&agentid=".AGENTID."&state=".AGENTID."#wechat_redirect";header("Location:" . $oauthUrl);exit;}//获取Token $resJson = HTTPGET("https://qyapi.weixin.qq.com/cgi-bin/gettoken?".http_build_query(array('corpid'=> CORPID,'corpsecret'=> CORPSECRET)));$accessToken = $resJson["access_token"];//获取用户身份票据$resJson = HTTPGET("https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?".http_build_query(array('access_token' => $accessToken,'code' => $code)));$user_ticket = $resJson["user_ticket"];$userid = $resJson["userid"];if($userid == null) {$userid = "nobody";}$resJson = HTTPPOST("https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail?access_token=".$accessToken, array('user_ticket' => $user_ticket));$account = $userid;$email = $resJson["email"];if($email != null && $email != "" ) {$account = str_replace(".", "", explode("@", $email)[0]);}$code  = ZENTAO_CODE;$key   = ZENTAO_SECRET;$time  = time();$token = md5($code . $key . $time);$ssoUrl = ZENTAO_PREURL . "/api.php?m=user&f=apilogin&account=".$account."&code=".$code."&time=".$time."&token=".$token;header("Location:" . $ssoUrl);exit;

成果截图

禅道与企业微信集成单点登录相关推荐

  1. 禅道配置企业微信应用webhook通知消息企业微信到个人

    企业微信后台管理端操作步骤 创建企业微信应用 使用企业微信[管理员]或[分级管理员]账号,登录企业后台管理界面创建应用 填写企业应用的基本信息 配置可信域名 配置企业可信IP 查看应用的Secret ...

  2. 禅道 配置(企业微信及云之家)群组机器人接收信息

    因为公司用到了企业微信后面用云之家工具管理,所以自己动手实现了对应机器人接收禅道问题,免得每次得去刷新禅道看有没问题 禅道版本12.4.3 专业版 1.企业微信和云之家新建群聊并添加机器人 禅道web ...

  3. 钉钉企业微信集成免登录

    一.资料 钉钉免登录方案:https://open.dingtalk.com/document/orgapp-server/sso-overview 二.实现 2.1 钉钉实现免登录第三方网站 实现后 ...

  4. java集成企业微信完成授权登录

    java集成企业微信完成授权登录 文章目录 前言 一.背景 二.使用步骤 1.前端请求链接获取Code 2.后端接收Code,请求微信链接完成返回用户信息 总结 前言 java集成企业微信完成授权登录 ...

  5. 集成企业微信,企业微信扫码登录和企业微信容器内免密登录

    项目上为了支持新的业务,扩展了通过企业微信扫码登录和通过企业微信容器内的直接访问应用服务的免密登录. 1.扫码登录 企业微信以Userid作为企业内的用户身份唯一标识,集成接口可以参考官网文档: ht ...

  6. 禅道9.7开源集成版

    环境 Centos7.3  禅道9.7开源集成版(集成了mysql.apache.php)不需要自己配置 下载 禅道下载地址:http://dl.cnezsoft.com/zentao/9.7/Zen ...

  7. AbpVnext 扩展企业微信扫码登录(钉钉登陆、短信登陆、微信登陆等)Vue框架

    目录 1.开始开发准备 1.1 企业微信扫码登陆接入流程 1.2 开启网页授权登陆 1.3 构造独立窗口登陆二维码 1.4 构造内嵌登陆二维码 @@登陆顺序: 1. 发现文档配置 2. 获取token ...

  8. 企业微信被别人登录了怎么办?有风险吗?

    如果企业微信被他人登录了,用户第一时间考虑到的一定是账号安全的问题,造成的风险会有多大. 前言 随着移动办公软件的盛行,企业微信成为很多企业和员工使用办公软件时的首选.虽然每个员工都有自己的企业微信账 ...

  9. 微信官方你真的懂OAuth2?Spring Security OAuth2整合企业微信扫码登录

    ❝ 企业微信扫码登录DEMO参见文末. 现在很多企业都接入了企业微信,作为私域社群工具,企业微信开放了很多API,可以打通很多自有的应用.既然是应用,那肯定需要做登录.正好企业微信提供了企业微信扫码授 ...

最新文章

  1. LoadRunner Winsock 10053错误的真正原因
  2. 面试常问Handler 的问题合集
  3. 读书笔记-《增长黑客》-搭建增长团队
  4. php session 域,PHP session 跨子域问题总结
  5. python在excel中的应用-python中的excel操作
  6. access工具_工具篇之pycharm小技巧-httpclient
  7. Java缓存Ehcache-核心类和方法介绍及代码实例
  8. linux sem函数,linux下信号量及其SEM_UNDO标志
  9. css权威指南 note2
  10. SDN第四次上机作业
  11. 清除数据库中大于10W行的垃圾历史数据
  12. AnyForWeb告诉你什么才是“最好的”编程语言
  13. CC(Context Capture)软件安装及空三过程中的十大常见报错与解决方法
  14. chinapub matlab,MATLAB 5手册
  15. 端口扫描工具Namp
  16. CDN技术详解之系统架构
  17. a foreign key constraint fails ,外键表中添加数据时无法实现
  18. 红帽操作系统 RHEL 8.1 官方ISO镜像下载
  19. 计算机主机中负责存储运行中程序的部件,计算机内负责解释执行程序的部件被称为什么_常见问题解析...
  20. 互联网日报 | 新浪同意被私有化;吉利汽车科创板首发过会;滴滴货运日单量持续破10万...

热门文章

  1. 基于Vue3封装一个好用的Websocket
  2. Maven clean和install的区别
  3. java验证码效果,和图片缩略效果
  4. Cadence Allegro 17.4学习记录开始34-PCB Editor 17.4软件PCB中Gerber孔符图,钻孔表和钻孔文件
  5. java不统计冠词_java中输入一段英文文章,请统计出该文章中的冠词数有多少个....
  6. 《欧美剧集观看最佳索引》(US SHOWS GUIDE) 【2005-12-27 转verycd】
  7. 远程连接服务端电脑mysql数据库
  8. 7809 - 试题J:因数个数 25'(欧拉筛法求因子个数)
  9. 【云计价i20】快速组价技巧应用综合集锦
  10. Android调用系统照相机拍照并自定义名称存储