浏览 17978 次
锁定老帖子 主题:phpBB开源论坛单点登录整合
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-26
环境(以下环境测试通过): Operation System Windows XP JVM SUN JDK 1.5 PHP PHP 5.2.6 Http Server Apache 2.2.6 Web Server Tomcat 5.5 CAS Server JA-SIG CAS Server 3.2.1 CAS PHP Client PHP CAS Client 1.0.0RC5 Database mysql-5.0.26-win32 Apache 2.2.6 + PHP 5.2.6为PHP的WEB服务器! Tomcat 5.5 为CAS Server的WEB服务器! 注意: 本次整合只PHPBB前台用户能使用SSO功能,管理员用户使用不了SSO,代码中$admin 变量代表是否管理员用户! 4. CAS PHP Client集成 4.1. 下载CAS PHP Client 总入口:http://www.ja-sig.org/wiki/display/CASC/phpCAS 源码入口页:http://www.ja-sig.org/wiki/display/CASC/Developing+phpCAS+within+Eclipse 源码访问: SVN URL: https://www.ja-sig.org/svn/cas-clients/phpcas Web interface: http://developer.ja-sig.org/source/browse/jasigsvn/cas-clients/phpcas 总入口页还有实例可供下载。 4.2. 更改phpBB论坛登录模块 以下可以参见:svn://192.168.16.225/phpBB/trunk/phpBB-3.0.1 1. 把CAS PHP Client的源码copy到${phpBB}/includes下,如下图结构; 图中选中的文件及目录为CAS PHP Client的全部源码。 2. 更改CAS PHP Clinet对https的限制; Down下来的PHP Client必须要使用https连接与CAS Server通信,在实际项目中,为减少部署的麻烦,可能只要http连接就能满足要求,在文件clinet.php中,把$this->_server['base_url'] = 'https://'更改为$this->_server['base_url'] = 'http://'即可,如图所示。 3. 更改phpBB登录模块 在function.php文件中 加入CAS类引用语句: require($phpbb_root_path . 'includes/CAS.' . $phpEx); 找到: if (isset($_POST['login'])) 替换成: if(!$admin && CAS_ENABLE){ // initialize phpCAS phpCAS::client(CAS_VERSION_2_0, CAS_SERVER_HOSTNAME, CAS_SERVER_PORT, CAS_SERVER_APP_NAME); phpCAS::setNoCasServerValidation(); // force CAS authentication phpCAS::forceAuthentication(); } if (isset($_POST['login']) || (!$admin && CAS_ENABLE) ) 找到: $result = $auth->login($username, $password, $autologin, $viewonline, $admin); 在上面代码片段前加上: if(!$admin && CAS_ENABLE){ $username = phpCAS::getUser(); $password = ''; } 在auth.php文件中 加入以下代码 /** *根据当前已登录CAS的用户名获取用户身份信息,封装用户身份信息 * added by Royce */ function login_cas($username){ global $db; $sql = 'SELECT user_id, username, user_password, user_passchg, user_pass_convert, user_email, user_type, user_login_attempts FROM ' . USERS_TABLE . " WHERE username_clean = '" . $username . "'"; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); if (!$row) { return array( 'status' => LOGIN_ERROR_USERNAME, 'error_msg' => 'LOGIN_ERROR_USERNAME', 'user_row' => array('user_id' => ANONYMOUS), ); } if ($row['user_type'] == USER_INACTIVE || $row['user_type'] == USER_IGNORE) { return array( 'status' => LOGIN_ERROR_ACTIVE, 'error_msg' => 'ACTIVE_ERROR', 'user_row' => $row, ); } // Successful login... set user_login_attempts to zero... return array( 'status' => LOGIN_SUCCESS, 'error_msg' => false, 'user_row' => $row, ); } 找到: $login = $method($username, $password); 替换为: if(!$admin && CAS_ENABLE) $login = $this->login_cas($username); else $login = $method($username, $password); 在constants.php文件中 增加: //是否启用CAS define('CAS_ENABLE', true); //CAS Server 主机名 define('CAS_SERVER_HOSTNAME', 'localhost'); //CAS Server 端口号 define('CAS_SERVER_PORT', 8080); //CAS Server应用名 define('CAS_SERVER_APP_NAME', 'cas'); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-10-20
请问下数据库方面怎么设置的?项目的user表是否要和phpbb的user表同步?
|
|
返回顶楼 | |
发表时间:2008-11-08
liuzhao 写道 请问下数据库方面怎么设置的?项目的user表是否要和phpbb的user表同步? 不好意思,没注意看你的评论了,项目的user表是否要和phpbb的user表是需要同步的,总之要维护帐户的统一性. |
|
返回顶楼 | |
发表时间:2008-11-08
项目的user表和phpbb的user表是需要同步的
|
|
返回顶楼 | |
发表时间:2008-11-23
cas server 端怎么配阿 谢谢
|
|
返回顶楼 | |
发表时间:2008-11-23
bjlfp 写道 cas server 端怎么配阿 谢谢 服务端主要配数据库连接,及TGT cookie是否使用https,如果是数据库连接可以参见我写的文章——http://iroyce.iteye.com/blog/101915 TGT cookie参见p:cookieSecure="false" <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator" p:cookieSecure="false" p:cookieMaxAge="-1" p:cookieName="CASTGC" p:cookiePath="/cas" /> </beans> |
|
返回顶楼 | |