`
juqkai
  • 浏览: 7549 次
文章分类
社区版块
存档分类
最新评论

cas, casphp, discuz整合成功案例

阅读更多
1. 屏蔽"密码和安全问题"
1.1 打开 /templates/default/personal_navbar.htm
1.2 找到65行, 会有
<li{if CURSCRIPT=='memcp' && $action == 'profile' && $typeid == '1'} class="current"{/if}><a href="memcp.php?action=profile&typeid=1">{lang memcp_profile_security}</a></li>
1.3 将上面的语句注释掉
1.4 代码修改更新后, 进入论坛后台, 调用 "工具"->"更新缓存" 然后执行更新缓存的操作. 因为这些静态页面全部做了缓存的.

2. 拦截登录/注册按钮, 以便自定义
2.1 打开 /include/common.js
2.2 找到 839行, 会有:
function showWindow(k, url, mode, cache) {
2.3 在这行的下一行添加:
if(k == 'register'){
window.location.href="http://192.168.41.219/register?returnurl=" + encodeURIComponent(window.location.href);
return;
}
if(k == 'login'){
window.location.href="http://192.168.41.219/login?service=" + encodeURIComponent(window.location.href);
return;
}
2.4 上面的代码主要是判断注册/登录事件, 并且进行跳转
2.5 代码修改更新后, 进入论坛后台, 调用 "工具"->"更新缓存" 然后执行更新缓存的操作. 因为这些静态页面全部做了缓存的.

3. 整合CAS
3.1 下载phpCas, 并放到论坛根目录
3.2 将login.php放入论坛根目录
3.3 整合
3.3.1 打开 include/common.inc.php
3.3.2 在最后 "?>"的前面添加:
require_once DISCUZ_ROOT.'./login.php';
3.4 修改密码验证
3.4.1 打开 uc_client/control/user.php
3.4.2 找到 122, 123 行, 并把它们注释掉, 如:
//} elseif($user['password'] != md5($passwordmd5.$user['salt'])) {
//$status = -2;
3.4.3 打开 uc_client/model/user.php
3.4.4 找到 100, 101 行, 并把它们注释掉, 如:
//} elseif($user['password'] != md5(md5($password).$user['salt'])) {
//return -2;
3.4.5 上面两个主要是去掉登录时的密码验证, 某种意义上来说, 可能不是很安全, 所以, 如果能把CAS SERVER修改来返回密码信息, 请还原这两个地方.
3.5 同步退出.
3.5.1 打开 logging.php .
3.5.2 第20行那个if块就是处理退出的逻辑.
if($action == 'logout' && !empty($formhash)) {
3.5.3 注释掉下面的逻辑块:
if($formhash != FORMHASH)
3.5.4 注释掉最后一句:
showmessage('logout_succeed', $re);
3.5.5 在最后一句后面添加:
phpCAS::logout(array('service'=>$re));
4. 其它
4.1 nginx 配置中的 server_name 配置
每台服务器是可以映射多个域名的, 以及多个应用的, 而PHP本身是得不到这些信息的, 所以通过nginx的这个配置进行设置, 并通过一些特殊的方式传给PHP, 所以, 这里一定要配置正确, 不然, 很有可能会导致一些莫名其妙的问题哦~~~
4.2 强制验证, 下面这条语句是强制验证, 即, 如果用户没有登录, 那么就直接跳转到登录界面, 在我们这次整合中并没有使用它. 因为如果使用它的话, 游客将无法进入论坛进行查询信息了.
4.3 同步退出, PHPCAS需要监控其它应用的退出请求, 那么就需要添加下面的这条语句. 基本, 第二个参数是指casServer的地址, 不然是收不到其它应用的退出信息的.
phpCAS::handleLogoutRequests(true, array("192.168.41.210"));
phpCAS::forceAuthentication();
这里再说细一点, 很多人都会遇到无法实现单点退出的功能, 程序A退出了, 程序B却不退出. 还有, 上面第二个参数代表着什么呢?
cas server 在收到一应用的退出消息的时候, 需要向所有登录过的应用广播这个消息. 所以, 上面第二个参数就是cas Server在广播的时候使用的地址, 当是cas server访问应用的时候是使用的局域网地址时, 那么, 上面就应该监控局域网IP, 如果是通过外网IP访问的, 那就应该使用外网IP或者域名.
为什么cas server会使用局域网IP呢? 程序本身是不会使用局域网IP的. 因为cas server收到应用的登录请求的时候, 它得到的是应用的域名,比如:www.xxx.com. 但是, 有的时候出于安全性的考虑,你的Cas server 服务器不能访问外网怎么办? (我们就遇到了这种情况)没法呀, 要实现这个功能. 最终, 我们修改了系统的hosts文件来实现域名映射, 直接将域名映射到局域网的IP上.这样, 应用收到的就是局域网IP了.
如果你遇到无法实现单点退出, 那你就检查一下, cas server能不能连接外网, 以及监控的地址是什么.






  • cas.rar (75.3 KB)
  • 下载次数: 24
分享到:
评论
1 楼 wuliaolll 2013-04-22  
这是什么版本的discuz,和最新的x2.5完全不搭架啊

相关推荐

    cas 和 discuz 配置整合

    【标题】:“CAS和Discuz配置整合” 【描述】:“集成CAS(Central Authentication Service,中央认证服务)与Discuz!论坛系统,实现单点登录(Single Sign-On, SSO)功能,是许多网站提高用户体验、简化登录流程的...

    cas整合实例

    本实例将详细阐述如何进行CAS整合,帮助你理解并实施这一过程。 首先,我们需要了解CAS的基本概念。CAS作为一个认证服务器,允许用户在访问多个受保护的应用系统时只需登录一次,而无需为每个系统单独进行认证。...

    acegi安全策略与CAS整合

    文档的目的是确保用户能够成功地将AceGI安全框架集成到他们的应用程序中,利用CAS服务器进行单点登录(SSO)和身份验证,以提高系统的安全性。 0.2 文档范围: 此文档涵盖了从安装CAS服务器,配置AceGI安全策略,到...

    整合spring+springWebMVC+cas客户端

    整合Spring、Spring Web MVC和CAS客户端的步骤如下: 1. **配置Spring**:创建Spring配置文件(如`applicationContext.xml`),声明必要的bean,包括数据源、事务管理器、Spring MVC的相关配置等。 2. **配置...

    Shiro和cas部分整合

    整合完成后,用户在访问应用时,首先会通过CAS服务器进行身份验证,成功后CAS会返回一个服务票据(ticket),Shiro会解析这个票据,验证用户的身份并建立会话。如果用户尝试登出,`logoutFilter`会触发CAS的单点登出...

    H3C云计算CAS故障排查经验案例集汇总.rar

    《H3C云计算CAS故障排查经验案例集》是针对H3C云计算平台Cloud Architecture System (CAS) 的故障处理和排查的一份重要参考资料。H3C CAS是一款基于虚拟化技术的企业级云计算操作系统,它提供了全面的云资源管理和...

    CAS和LDAP整合

    5. **测试连接**:启动CAS服务器后,通过CAS管理界面或使用测试工具(如ldapsearch)验证CAS能否成功连接到LDAP服务器并执行查询。 6. **SSO流程**:当用户尝试访问受CAS保护的应用时,会被重定向到CAS登录页面。...

    spring boot整合CAS Client实现单点登陆验证的示例

    2. CAS Server 对客户端应用进行身份认证,如果认证成功,将生成一个 Ticket。 3. CAS Server 将 Ticket 返回给客户端应用。 4. 客户端应用使用 Ticket 访问受保护资源。 在 Spring Boot 中,我们可以使用 CAS ...

    cas server 5.3.9 整合数据库验证用户信息,使用security密码验证方式

    在CAS Server 5.3.9中整合数据库验证用户信息是常见的应用场景,这意味着CAS会与一个或多个数据库进行交互,以检查用户的凭证是否有效。这种集成通常涉及到以下步骤: 1. **配置数据库连接**:首先,你需要在CAS...

    CAS整合LDAP实现单点登录原理及部署

    CAS整合LDAP实现单点登录的原理及部署学习笔记,cas实现单点登录,ldap负责账户管理

    springboot+cas5.2.3+shiro+pac4j实现sso集成2

    在这个项目中,CAS服务器负责处理用户的登录验证,验证成功后,它会生成一个Ticket并发送给客户端,客户端再用这个Ticket向各个服务请求访问权限。 Shiro是Apache的一个开源安全框架,它提供了一种简单的方式来管理...

    cas tomcat整合单点登录demo

    【标题】"CAS Tomcat整合单点登录Demo"是一个示例项目,展示了如何将CAS(Central Authentication Service)与Tomcat应用程序服务器集成,实现单点登录(Single Sign-On, SSO)的功能。CAS是一种开放源码的身份验证...

    acegi+cas整合工程及说明3

    将acegi和cas的war包修改并整合测试,里面包含所需依赖包。经过分卷压缩一共3个文件.

    discuz x2.5和cas集成,一键登录

    验证成功后,CAS会返回票据,Discuz需要解析这个票据并确认用户身份。 - **实现登出功能**:集成CAS的登出功能,确保用户在Discuz登出时,也会在所有其他已集成的应用中登出。 5. **错误处理和安全**:集成过程中...

    Acegi Security整合CAS实例

    标题和描述均提到了“Acegi Security整合CAS实例”,这涉及到Spring Framework下的Acegi Security模块与CAS(Central Authentication Service)的集成。Acegi Security是Spring框架的一个子项目,旨在为应用提供安全...

    CAS单点登录多语言整合文档+源码

    如果没有,用户需要在CAS服务器上输入凭证,一旦验证成功,CAS会返回一个票据给客户端,客户端再用这个票据向应用服务器证明用户的身份。 在"phpClient的整合"部分,这意味着文档将涵盖如何在PHP应用中集成CAS...

    shiro整合cas3.5

    在本文中,我们将讨论如何将 Apache Shiro 与 CAS 3.5 版本进行整合,以实现统一的登录认证。 整合 Shiro 和 CAS 的主要目标是利用 CAS 的身份验证服务,避免在每个应用中重复实现登录逻辑。以下是一个简化的整合...

    CAS服务器新增硬盘配置案例.docx编程资料

    ### CAS服务器新增硬盘配置案例详解 #### 背景介绍 在现代企业的IT环境中,随着业务量的增长,服务器资源的需求也随之增加。对于采用H3C CAS(CloudServer Operating System)虚拟化平台的企业而言,当遇到CVK...

Global site tag (gtag.js) - Google Analytics