禅道开源版6.4与CAS4.0单点登录,兼容禅道8.2.1

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.首先下载禅道的源码,现在最新版本的是6.4的版本,我测试的时候是在windows下面测试的,使用WAMPSERVER作为PHP的集成环境,服务端口为80,另外开启一个Tomcat服务,部署CAS SERVER应用,端口为8080。

2.在zentaopms\module中添加一个sso模块。就是添加一个sso的文件夹。

2.由于禅到8.X后存在sso模块,为了不影响原系统,所以在zentaopms\module中添加一个cas模块。就是添加一个cas的文件夹。

3.然后cas php client,下载地址http://downloads.jasig.org/cas-clients/php/current/,新的下载地址https://github.com/Jasig/phpCAS/releases拷贝压缩文件中CAS文件夹和CAS.php文件到sso目录。如下图,(如果运行过,就会产生phpCAS.log是由于CAS client 开启了debug生成的,生产环境建议不要配置,建议调试的时候可以配置该属性)。

禅道开源版6.4与CAS4.0单点登录,兼容禅道8.2.1_第1张图片

禅道开源版6.4与CAS4.0单点登录,兼容禅道8.2.1_第2张图片

4.创建control.php文件(zentaopms\module\cas\control.php),可以修改代码中的配置文件,$cas_host的地址(也就是代码中的localhost),代码如下:

loadModel('user')->getById($account);
		if($user)
		{
			$this->user->cleanLocked($user->account);
			/* Authorize him and save to session. */
			$user->rights = $this->user->authorize($account);
			$user->groups = $this->user->getGroups($account);
			$this->dao->update(TABLE_USER)->set('visits = visits + 1')->set('ip')->eq($userIP)->set('last')->eq($last)->where('account')->eq($user->account)->exec();
			
			$this->session->set('user', $user);
			$this->app->user = $this->session->user;
			$this->loadModel('action')->create('user', $user->id, 'login');
			
			if (isset($_REQUEST['referer'])) {
				$this->locate($_REQUEST['referer']);
			}
			else
			{
				// 跳转页面到index页面或者referer页面
				$this->locate($location);
			}
		}
		else
		{
			echo "用户".$account."不存在,请联系管理员申请用户。";
		}
		//-------------------------------------end-------------------------------------
    }

    public function logout()
    {
        phpCAS::logout();
    }
}
?>

 

 

5.修改该页面的权限,创建zentaopms\module\common\ext\model\cas.php文件,如果没有这个文件,就无法调转到SSO的认证页面,系统本身会拦截请求,跳转到禅道的登录页面,添加了该文件之后,就可以跳转到CAS SERVER的登录页面,使用cas单点登录了。代码如下

 

 

6.测试配置效果,打开 http://localhost/zentaopms/www/index.php?m=cas&f=login(禅道8.X以后可以访问http://localhost/zentaopms/www/cas-login.html),查看是否跳转到指定的CAS Server 的登录页面,登录成功之后是否能正常跳转到禅道的主页页面。

sso认证地址http://localhost/zentaopms/www/index.php?m=cas&f=login
sso注销地址http://localhost/zentaopms/www/index.php?m=cas&f=login&logout
认证通过之后的地址为:http://localhost/zentaopms/www/index.php?m=index&f=index

转载于:https://my.oschina.net/u/1159248/blog/371422

你可能感兴趣的:(php,python,java)