`

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是一款全球知名的开源论坛软件,它以其稳定性和灵活性赢得了广泛的用户群体。在多语种环境中,为了满足不同用户的需求,phpbb支持语言包的安装和切换,使得论坛内容...

    phpbb3.0.5_zh 开源论坛程序

    《phpbb3.0.5_zh开源论坛程序详解及应用》 PHPBB3.0.5是一款基于PHP语言和MySQL数据库的开源论坛系统,它以其稳定、安全、易用的特点,在全球范围内广受欢迎,特别是在中文社区中逐渐崭露头角。这款论坛软件的中文...

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

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

    phpBB-3.0.5 php开源论坛源代码

    phpBB-3.0.5 php开源论坛源代码

    phpbb3论坛程序

    总的来说,`phpBB3` 作为一款成熟的开源论坛软件,因其易用性、可扩展性和强大的功能,深受全球众多社区的青睐。无论你是想建立一个小型的讨论区,还是一个大型的在线社区,`phpBB3` 都能为你提供一个坚实的基础。

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

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

    PHPBB V4 wap手机论坛

    5. **扩展性强**:PHPBB V4支持多种插件和主题,允许用户自定义论坛的功能和外观,如添加社交网络整合、积分系统、广告管理等。 6. **银行游戏支持**:描述中提到的“银行等游戏”可能是指PHPBB V4内建或通过插件...

    phpBB论坛v3

    总之,phpBB3作为一款成熟的开源论坛软件,提供了全面的社区管理工具和丰富的用户功能。无论是初学者还是经验丰富的管理员,都能从中受益。通过深入理解并充分利用这些特性,可以创建出活跃且有吸引力的在线社区。

    PHPBB2.1.8论坛中文版

    PHPBB(PHP Bulletin Board)是一款基于PHP语言的开源免费论坛软件,广泛应用于搭建在线社区。版本2.1.8是PHPBB的一个重要迭代,它提供了稳定性和安全性方面的改进,以及用户体验优化。这款论坛系统的特点包括: 1....

    PHPBB 开源论坛源码 v3.2.3

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

    Laravel开发-laravel-phpbb-bridge

    3. **中间件**:通过Laravel的中间件,检查用户是否已在PHPBB中登录,或者反之,从而实现单点登录。 4. **API接口**:项目可能包含用于与PHPBB API交互的自定义服务提供商或库,用于获取用户信息、登录状态等。 5. *...

    phpBB论坛2.04版

    phpBB2.04版允许安装各种插件和扩展,如增强SEO、社交网络整合、广告管理等,进一步提升论坛功能和用户体验。 ### 总结 phpBB2.04版作为一个成熟的论坛解决方案,它的稳定性、可扩展性和安全性使其成为搭建社区...

    phpbb3简易论坛代码

    【phpbb3简易论坛代码】是一个基于PHP编程语言和MySQL数据库构建的开源论坛软件解决方案。这个论坛系统设计简洁,易于安装和管理,适用于小型到中型企业或社区网站,提供了一个互动交流的平台。 PHP(Hypertext ...

    雷爵论坛(phpbb风格)

    【雷爵论坛(phpbb风格)】是一款基于PHPBB开源论坛系统的定制版,它提供了丰富的社区交流功能,适合建立各种类型的在线讨论平台。PHPBB是一款全球广泛应用的免费论坛软件,以其稳定性、安全性以及易用性著称。在这个...

    phpBB论坛管理教程

    ### phpBB论坛管理教程知识点概览 #### 一、phpBB管理员控制面板 - **简介**:新版phpBB提供了一个高度可配置的管理员控制面板(ACP),它允许管理员轻松地调整几乎所有功能。管理员可以通过点击论坛底部的“管理...

    PHPBB论坛2.0用户手册中文版

    《PHPBB论坛2.0用户手册中文版》是针对PHPBB这款开源论坛软件的重要参考资料,主要面向使用PHPBB2.0版本的用户、管理员以及开发者。PHPBB是一款基于PHP语言和MySQL数据库的讨论板系统,它以其开源、免费、功能强大、...

    phpBB-WAP v5.1

    是世界上知名的 phpBB 论坛开源软件的移动终端版本。phpBB-WAP 这个名字,是 PHP Bulletin Board Wireless Application Protocol 的缩写。 『主要更新』 * 全新的 MODS 模式 * 首页、自定义页面模块功能,想怎么...

    WordPress phpbb phaos OGame 可整合资源

    phpBB是一款免费的开源论坛软件,以其稳定的性能和强大的社区管理功能受到赞誉。它的集成可以为WordPress网站提供论坛功能,使用户能够进行讨论、分享攻略、交流游戏经验等。 phaos则是一个专门针对在线游戏的PHP...

    phpbb论坛2.03-2.04升级文件

    PHPBB(PHPBulletin Board System)是一款开源的、基于PHP语言的论坛软件,因其灵活性和易用性而广受欢迎。本次压缩包中的"phpbb论坛2.03-2.04升级文件"是针对PHPBB论坛从2.03版本升级到2.04版本的重要工具,这对于...

Global site tag (gtag.js) - Google Analytics