`

phpBB开源论坛单点登录整合

阅读更多
以下文档以实际项目中的整合为例,抽取了phpBB论坛部分代码,转载请注明出处,欢迎转载!

环境(以下环境测试通过):

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');

  • 大小: 18.7 KB
  • 大小: 15.1 KB
分享到:
评论
7 楼 bjlfp 2008-11-24  
org.jasig.cas.authentication.handler.LiferayPasswordEncoder   这个类怎么写啊?  帮忙,谢谢!
6 楼 bjlfp 2008-11-23  
先谢谢了!
5 楼 iRoyce 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>
4 楼 bjlfp 2008-11-23  
cas server 端怎么配阿   谢谢
3 楼 iRoyce 2008-11-08  
项目的user表和phpbb的user表是需要同步的
2 楼 iRoyce 2008-11-08  
liuzhao 写道

请问下数据库方面怎么设置的?项目的user表是否要和phpbb的user表同步?

不好意思,没注意看你的评论了,项目的user表是否要和phpbb的user表是需要同步的,总之要维护帐户的统一性.
1 楼 liuzhao 2008-10-20  
请问下数据库方面怎么设置的?项目的user表是否要和phpbb的user表同步?

相关推荐

    phpbb开源论坛快捷切换语言的脚本

    phpbb开源论坛快捷切换语言的脚本,根据教程替换phpbb文件即可,别忘了清空缓存

    如何整合Joomla1.5.9与phpBB3论坛

    详细介绍利用RokBridge_1.0RC8整合Joomla!1.5.9与phpBB3论坛。

    phpBB Multiple Domain SSO:phpbb 多域单点登录与 wordpress 插件-开源

    这些代码修改的作用是为 phpbb 和其他站点/代码/应用程序创建跨不同、多个域的单点登录。 这些修改使用 phpbb 用户表、会话等。 它的作用是通过使用 iframes 为每个域设置 cookie,它加载一些 connect.php 文件,该...

    phpBB-3.0.5 php开源论坛源代码

    phpBB-3.0.5 php开源论坛源代码

    phpbb3.0.5_zh 开源论坛程序

    phpbb程序现在在国内开始火起来了,确实是不错的程序,只是资料国内还不是太多,可以到华人天地,和phpbbchina去看看,专门讨论phpbb的论坛。

    PHPBB开源论坛社区程序 v3.0.11.rar

    phpBB(中文版)不仅是受欢迎的自由软件还是个开放源代码的网络论坛系统,使用PHP作为程序语言,并支持如MySQL、 PostgreSQL、MSSQL、Microsoft Access与Oracle[1]等的资料库。

    PHPBB 开源论坛源码 v3.2.3

    phpBB不仅是受欢迎的自由软件还是个开放源代码的网络论坛系统,使用PHP作为程序语言,并支持如MySQL、 PostgreSQL、MSSQL、Microsoft Access与Oracle等的资料库.

    phpbb手机论坛源码

    phpbb手机论坛源码非常好用。演示网站phpbb-wap.com

    PHPBB V4 wap手机论坛

    PHPBB wap论坛 不懂的百度一下PHPBB手机论坛! 功能还不错!还支持银行等游戏!

    phpbb-wap手机论坛系统v6.0

    来自俄罗斯目前最流行的开源wap论坛软件PHPBB-WAP PHPBB-WAP v6.0 更新日志: 1. 自带聊天室、挖豆、签到、QQ登录、金币管理MOD,升级完成后进入后台安装一下就可以(QQ登录自己到腾讯的QQ互联申请) 2. 首页都帮你...

    phpBB论坛管理教程

    本教程详细的介绍了phpBB系统中论坛管理的相关使用教程。

    PHPBB论坛拍卖插件phpbb-auction

    ## Requirements: A running phpBB 2.0.x (lastest version recommended) ## GD 1.8.x - 2.0 or higher (require for auto-thumbnail ## HTTP File Upload Enabled ## ## Tested with: __________ ## ## Files ...

    phpBB论坛2.04版

    phpBB论坛2.04版

    phpbb3简易论坛代码

    phpbb3简易论坛代码php+mysql

    phpbb论坛MOD插件库

    适用phpBB 版本: 2.0.0 - 2.0.1 - 2.0.2 Admin Overall Forums Permission.zip 这个hack 允许管理人员用鼠标器轻易的一点就设定所有论坛的权限。对于新手来说很适用 Admin Panel for Junior Admins and Mods.zip ...

    PHPBB 开源论坛系统 v3.2.2

    phpBB不仅是受欢迎的自由软件还是个开放源代码的网络论坛系统使用PHP作为程序语言并支持如MySQL、 PostgreSQL、MSSQL、Microsoft Access与Oracle等的资料库.

    phpbb3论坛程序

    基于php开发的论坛程序,基于php开发的论坛程序

    phpbb-wap手机论坛系统 v6.1.zip

    PHPBB-WAP v6.1 更新日志: * 增加用户中心主页装扮功能 * 增加用户中心留言功能 * 增加文章功能 ...来自俄罗斯目前最流行的开源wap论坛软件PHPBB-WAP     相关阅读 同类推荐: 论坛系统

    phpbb论坛2.03-2.04升级文件

    phpbb论坛中文版2.03修正版升级到2.04的升级文件

Global site tag (gtag.js) - Google Analytics