CAS插件
插件作用:让禅道支持 CAS 登录
测试版本:12.4,12.5.3
其他说明:安装完成后,会在原 登录 按钮 左侧,生成 单点登录 按钮,安装的时候,参考一下 安装文档,我已经尽量把文档写清楚了,插件里的一些代码,直接引用了,Github 上 zhoujunhe 的钉钉扫码代码,感谢他的开源代码。
重要说明:详细看 安装文档!详细看 安装文档!详细看 安装文档!404的问题也在安装文档里有说明。如果我有描述不清楚,或者代码错误的,麻烦邮件提醒我一下,我会及时更新修改。
登录界面
配置界面
特别说明:
1、默认创建的用户所在组为『其他』,登录后可能提示没有权限,请使用管理员在『组织』-『权限』中对新建的用户进行权限设置
2、token回调中,地址的拼接默认为:$config->requestType = 'PATH_INFO';
一、插件安装
-
安装方法1:源码安装
- 下载插件
- 将解压插件到本地
- 将下面两个目录,复制到禅道的根目录
-
安装方法2:插件安装
- 下载插件
- 登录管理员账号,后台->插件->本地安装->选择zip包-> 安装
二、CAS服务器配置
-
增加下面几个属性,CAS返回时key值要跟下面一样,如果没有办法修改 CAS返回的key值,就到 module/cas/control.php 进进行修改映射。
- name 用户的名称,就是真实姓名
- email 用户的邮箱
- mobile 用户的手机号
- account 用户名,需要在禅道里生成的账号名。
三、插件配置
-
配置文件在
config/ext/cas.php
- $config->cas->loginUrl 修改为 cas 的登录url
- $config->cas->authUrl 修改为 cas token的认证路径
- $config->cas->serviceUrl 禅道应用的 token 回调地址,如果禅道在网站根路径上,只需要修改域名,否则修改成禅道URL根路径。 如果回调的时候,出现404,大概率是这里的地址配置错误,我在测试的禅道URL根路径是 http://xxxxx/ ,有的是. http://xxxx/zentao/,所以需要根据实际进行修改
应用版本号 |
发布日期 |
更新内容 |
可兼容的禅道版本 |
购买/试用 |
1.1
|
2021-04-16 |
1、使用URLEncode编码Service 2、默认使用Get跳转到登录地址 3、删除一些Mac的临时生成文件 感谢 Stanley Nian 的指教! |
禅道开源版 12.4, 禅道开源版 12.5.3
|
详情
下载
|
1.0
|
2021-04-14 |
|
禅道开源版 12.4, 禅道开源版 12.5.3
|
详情
下载
|
/opt/zbox/app/zentao/module/user/control.php中
logout函数里
public function logout($referer = 0)
{
if(isset($this->app->user->id)) $this->loadModel('action')->create('user', $this->app->user->id, 'logout');
session_destroy();
setcookie('za', false);
setcookie('zp', false);
if($this->app->getViewType() == 'json') die(json_encode(array('status' => 'success')));
$vars = !empty($referer) ? "referer=$referer" : '';
$this->locate($this->createLink('user', 'login', $vars));
}
注释掉 注释掉$this->locate($this->createLink('user', 'login', $vars));
增加 header('location:https://cas.aaaa.com:8443/cas/logout?service=http%3A%2F%2Fzentao.aaaa.com%2Fzentao%2F');
首先,配置文件中的serviceUrl应该是这个样子:
<你的禅道访问地址>?m=cas&f=tokenlogin
比如:https://zentao.example.com/www/?m=cas&f=tokenlogin
之后将这个URL做URLEncode后,赋给serviceUrl
第二步,修改module/cas/control.php,找到这一行:
$output = $this->cas->curl($gotoUrl);
修改为:
$output = $this->cas->curl($gotoUrl, [], 'GET');
上述修改针对版本:1.0(2021-04-14 19:03:34)
供大家参考
http:// 项目部署ip:端口 /cas-tokenlogin.html,麻烦抽空解答一下吧,谢谢