processmaker在与cas做SSO集成时需要做的修改_iterjpnic的博客-CSDN博客


本站和网页 https://blog.csdn.net/iterjpnic/article/details/10060973 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

processmaker在与cas做SSO集成时需要做的修改_iterjpnic的博客-CSDN博客
processmaker在与cas做SSO集成时需要做的修改
iterjpnic
于 2013-08-19 09:46:37 发布
3334
收藏
分类专栏:
Web开发
其他
文章标签:
processmaker
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/iterjpnic/article/details/10060973
版权
Web开发
同时被 2 个专栏收录
5 篇文章
0 订阅
订阅专栏
其他
4 篇文章
0 订阅
订阅专栏
前言
processmaker是目前开源的最好的工作流系统,cas是知名的单点登录server。网络上关于这两个系统的集成文章很少,有价值的仅有一篇,http://forum.processmaker.com/viewtopic.php?f=9&t=930,但该文章中介绍的processmaker版本较低(修改的位置不对)和部分功能未实现。本文部分借鉴该文章,以pm2.5.0为例,主要介绍processmaker在与cas集成时要做的工作,所以cas的相关配置请移步http://www.blogjava.net/tufanshu/archive/2011/01/21/343290.html。
正文
pm是用php实现的,所以要先下载cas的php客户端,可在此处下载;php客户端解压后放在$pm/gulliver/thirdparty/下,才能在php代码中引入cas库;修改$pm/workflow/engine/methods/login/authentication.php,在代码最上面加入:require_once ("CAS-1.3.2/CAS.php");
// Uncomment to enable./ debugging
phpCAS::setDebug();
// version, host, port, context, session
phpCAS::client(CAS_VERSION_2_0, "localhost", 8443, 'cas', false); //我的cas server访问地址是:https://localhost:443/cas
phpCAS::setNoCasServerValidation();
phpCAS::forceAuthentication();
// logout if desired
if (isset($_REQUEST['logout'])) {
phpCAS::logout();
if ( phpCAS::isAuthenticated() == true )
$casAuth = CASAuthIsTrue;
$_POST['form']['USR_USERNAME'] = phpCAS::getUser();
$_POST['form']['USR_PASSWORD'] = $casAuth;这样可以使pm原本的登录认证操作转移到cas里进行,在登录成功后统一将password设置为True;修改$pm/workflow/engine/xmlform/login/login.xml,在函数bsClick的最后一行加上:document.login.submit();
这样可以试pm原本的登录页面自动提交,也就能自动跳转到cas的登录页面了。修改$pm/rbac/engine/classes/model/RbacUsers.php,在verifyLogin()函数中将://if ( $aFields['USR_PASSWORD'] == md5 ($sPassword ) || 'md5:'.$aFields['USR_PASSWORD'] === $sPassword) {替换为:if ( $sPassword == CASAuthIsTrue) {即与步骤3中相对应;修改$pm/workflow/engine/methods/login/login.php,在代码最前面加入:require_once ("CAS-1.3.2/CAS.php");
phpCAS::client(CAS_VERSION_2_0, 'localhost', 8443, 'cas', false);
// logout if desired
if (isset($_REQUEST['logout'])) {
phpCAS::logout();
}这是为了处理用户在退出pm时也能从cas中退出登录。为了实现cas退出登录功能,除了6,还要在$pm/workflow/engine/skinEngine/skinEngine.php的第391、394、663、666行,分别将“/login/login” 改为 “/login/login?logout=1”,与6中的修改配合实现。就是需要在CAS server的数据源配置中引用pm的库rb_workflow中的USERS表,配置的sql是“select USR_PASSWORD from USERS where USR_USERNAME=?”,passwordEncoder用MD5。
Extra
       如果只是日常使用,上面的8条修改已经足够了。但。。。
解决process的new web entry 与 CAS-SSO 用户认证冲突的问题       
在使用process的new web entry时,需要填入用户名和密码,这是在RbacUsers.verify_login()函数中验证的,但之前咱们已经在第5步修改了verify_login的代码,从之前的用户名/密码改为仅看密码是否等于CASAuthIsTrue来判断了,就
会导致在new web entry时候总报错:密码错误。
所以需要调整一下流程。
在$pm/rbca/engine/classes/model/RbacUsers.php中加入函数  noSSOVerifyLogin(即上面第5步中修改前的login函数): /**
* Autentificacion derb un usuario a traves de la clase RBAC_user
* verifica que un usuario tiene derechos de iniciar una aplicacion
* @author Fernando Ontiveros Lira <fernando@colosa.com>
* access public
* Function verifyLogin
* @param string $strUser UserId (login) de usuario
* @param string $strPass Password
* @return
* -1: no existe usuario
* -2: password errado
* -3: usuario inactivo
* -4: usuario vencido
* n : uid de usuario
*/
function noSSOVerifyLogin($sUsername, $sPassword )
//invalid user
if ( $sUsername == '' ) return -1;
//invalid password
if ( $sPassword == '' ) return -2;
$con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME);
try {
$c = new Criteria( 'rbac' );
$c->add ( RbacUsersPeer::USR_USERNAME, $sUsername );
$rs = RbacUsersPeer::doSelect( $c );
if ( is_array($rs) && isset( $rs[0] ) && is_object($rs[0]) && get_class ( $rs[0] ) == 'RbacUsers' ) {
$aFields = $rs[0]->toArray(BasePeer::TYPE_FIELDNAME);
//verify password with md5, and md5 format
//if ( $aFields['USR_PASSWORD'] == md5 ($sPassword ) ) {
if ( $aFields['USR_PASSWORD'] == md5 ($sPassword ) || 'md5:'.$aFields['USR_PASSWORD'] === $sPassword) {
if ($aFields['USR_DUE_DATE'] < date('Y-m-d') )
return -4;
if ($aFields['USR_STATUS'] != 1 )
return -3;
return $aFields['USR_UID'];
else
return -2;
else {
return -1;
catch (Exception $oError) {
throw($oError);
return -1;
这样就是增加了一个函数来完成使用传统用户名/密码方式来认证的渠道(因为跟cas用的都是同一个数据源,所以这类查询操作不会破坏 SSO 特性)修改$pm/gulliver/system/class.rbac.php,在其中加入一个函数 NoSSOVerifyLogin: /**
* authentication of an user through of class RBAC_user
* checking that an user has right to start an applicaton
* @author Fernando Ontiveros Lira <fernando@colosa.com>
* @access public
* @param string $strUser UserId (login) an user
* @param string $strPass Password
* @return
* -1: no user
* -2: wrong password
* -3: inactive usuario
* -4: due date
* -5: invalid authentication source ( **new )
* n : uid of user
*/
function NoSSOVerifyLogin( $strUser, $strPass)
if ( strlen($strPass) == 0) return -2;
//check if the user exists in the table RB_WORKFLOW.USERS
$this->initRBAC();
//if the user exists, the VerifyUser function will return the user properties
if ( $this->userObj->verifyUser($strUser) == 0 ) {
//here we are checking if the automatic user Register is enabled, ioc return -1
$res = $this->checkAutomaticRegister( $strUser, $strPass);
if ( $res == 1 )
$this->userObj->verifyUser($strUser);
else
return $res;
//default values
$sAuthType = 'mysql';
if ( isset($this->userObj->fields['USR_AUTH_TYPE']) ) $sAuthType = strtolower ( $this->userObj->fields['USR_AUTH_TYPE'] );
//hook for RBAC plugins
if ( $sAuthType != 'mysql' && $sAuthType != '' ) {
$sAuthSource = $this->userObj->fields['UID_AUTH_SOURCE'];
$sAuthUserDn = $this->userObj->fields['USR_AUTH_USER_DN'];
$res = $this->VerifyWithOtherAuthenticationSource( $sAuthType, $sAuthSource, $this->userObj->fields, $sAuthUserDn, $strPass);
return $res;
else {
$this->userObj->reuseUserFields = true;
$res = $this->userObj->NoSSOVerifyLogin($strUser, $strPass);
return $res;
即在函数执行的最后阶段,只把login函数最后的userObj->VerifyLogin改为userObj->NoSSOVerifyLogin,来充当新函数了。new web entry使用的是pm的web service实现的login操作,首先修改$pm/workflow/engine/classes/class.wsBase.php中的login函数,将第三行的:$uid = $RBAC->VerifyLogin($userid , $password);改为:$uid = $RBAC->NoSSOVerifyLogin($userid , $password);     这样就实现了在new web entry时的内部验证与SSO冲突的问题了。此类问题可能随着功能的深入还会有,之后再记录。
iterjpnic
关注
关注
点赞
收藏
打赏
评论
processmaker在与cas做SSO集成时需要做的修改
前言processmaker是目前开源的最好的工作流系统,cas是知名的单点登录server。网络上关于这两个系统的集成文章很少,有价值的仅有一篇,http://forum.processmaker.com/viewtopic.php?f=9&t=930,但该文章中介绍的processmaker版本较低(修改的位置不对)和部分功能未实现。本文部分借鉴该文章,以pm2.5.0为例,主要介绍pro
复制链接
扫一扫
专栏目录
工作流 processmaker程序 附 安装指导以及中文汉化包
08-28
工作流 processmaker 2.5.1 程序 附 安装指导以及中文汉化包 绝对可用
cas php 重定向过多,phpcas 登录跳转有关问题
weixin_36183642的博客
03-29
187
phpcas 登录跳转问题//导入casrequire_once("CAS.php");phpCAS::client(CAS_VERSION_2_0,'localhost',8443,'cas',true);phpCAS::setNoCasServerValidation();phpCAS::forceAuthentication();if(phpCAS::isAuthenticated()==t...
评论 2
您还未登录,请先
登录
后发表或查看评论
基于ProcessMaker开发流程管理系统的最佳实践
genwise的专栏
07-29
3727
基于ProcessMaker开发流程管理系统的最佳实践
记录基于ProcessMaker开发流程管理系统的好的做法,可以避免掉进去的陷阱。
1、定制REST API时,要先关闭ProcessMaker,才删除routes.php
否则可能导致无法访问REST API, 无法打开你需要编辑的流程、电子表单等。这是你可以导出流程文件(*.pmx),然后卸载ProcessMaker,再重新安装...
ProcessMaker学习笔记
bennybi的博客
03-22
4822
1 配置- 入口src/workflow/public_html/app.php- 安装路径配置:src/workflow/engine/config/paths_installed.php- 数据库配置路径:src/shared/sites/workflow/databases.php&nbsp;
src/shared/sites/workflow/db.php- 系统环境变量:src\...
php processmarker,ProcessMaker的教程
最新发布
weixin_35973521的博客
04-15
142
完美者(wmzhe.com)网站以软件下载为基础,改版后的网站对功能性板块进行扩充,以期能够解决用户在软件使用过程中遇见的所有问题。网站新增了“软件百科”、“锦囊妙技”等频道,可以更好地对用户的软件使用全周期进行更加专业地服务。ProcessMaker是一个运行于客户/服务端的商业进程(BPM)和工作流管理软件,软件界面简洁、上手快、功能实用,适用于中小型企业。软件功能1.关图形化界面可以进行拖拽...
cas php客户端配置,cas-client单点登录客户端使用案例
weixin_29144259的博客
04-01
254
上一篇记录了关于cas-server的服务端安装服务端搭建完毕后,开始使用客户端请求了。客户端的下载地址: http://developer.jasig.org/cas-clients/那么客户端的使用例子,在下载包里面,我们可以得到example例子,但是全部是英文可能会看起来不太舒服。由于cas-server默认采取的是https协议,所以cas-client逻辑里也有一些地方默认用https...
java php服务器配置_Cas服务器设置(java),java、php客户端配置
weixin_39680609的博客
02-13
83
由于多个项目需要帐号的互通,所以一开始就是用cas去做的,不得不说cas要配置的东西挺多的,但是项目安全性不需要太高,所以没有做https的请求,也就是没有弄证书,这虽然省了很多时间和精力,但是项目之间的安全性降低了不少。1.从官网http://www.jasig.org下载CAS Server, 将cas-server-webapp-3.4.12.war解压, 可以看到是一个标准的java的we...
php 用CAS实现SSO单点登陆及登出功能
热门推荐
Sara的专栏
08-04
4万+
php用CAS实现SSO单点登陆及登出功能
一..CAS服务器搭建
CAS服务器端下载地址:http://downloads.jasig.org/cas/
解压cas-server-4.0.0-release.zip将modules目录下的cas-server-webapp-4.0.0.war改名称为cas.war复制到tomcat的webapps下,启动tomcat,访问
四、记一次失败的 CAS 搭建 之 结果总是那么伤(客户端)
weixin_30340819的博客
06-26
159
四、记一次失败的 CAS 搭建 之 结果总是那么伤(客户端)
======================================================================================================...
CAS客户端整合(二) Zabbix
weixin_30752699的博客
11-14
362
Zabbix是一个强大的服务器/交换机监控应用,有zabbix-server, zabbix-client, zabbix-web 三部分。zabbix-web管理端是用php写的。
前文参考:CAS客户端整合(一) Discuz!
登录流程
修改代码前例行先确定登录流程
原登录过程
Zabbix的登录流程跟 Discuz 类似。系统从 cookie/session 中读取用户会话id,如果用...
cas client 更新ticket_解决CAS Client验证票据时抛出TicketValidationException异常问题
weixin_39520199的博客
12-22
1475
项目中CAS Client请求CAS Server验证ST票据之后返回值时,发生ST票据验证失败的错误异常,具体日志信息如下:org.jasig.cas.client.validation.TicketValidationException:Ticket'ST-5-u53bEqNQz2phBhnocFsb-www.yoodb.com'notrecognized经过查找相关资料并Debug模式...
CAS学习记录2--CAS Server的改造
tsfdez的博客
07-21
858
一、前言
之前整理完CAS Server的安装,现在开始做CAS Server的改造
二、语言改造
CAS默认是使用英文的,虽然在界面上可以切换语言,但还是默认成中文的比较好
打开到WEB-INF/cas-servlet.xml,找到bean id="localeResolver",将默认语言改为zh_CN
重启Tomcat,清除浏览器缓存就可以了
三、账号认证
ProcessMaker 教程
09-09
根据对ProcessMaker的实际操作,及对源码的修改情况,整理的一套实战教程,快速上手。
processmaker实战教程.rar
09-19
内含: ProcessMaker 加入SSO登录完整过程,ProcessMaker 加入我的发起功能,ProcessMaker 内部报销系统,ProcessMaker 修改表单查看功能.是一套不错的实战资源.
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
iterjpnic
CSDN认证博客专家
CSDN认证企业博客
码龄12年
暂无认证
16
原创
102万+
周排名
124万+
总排名
7万+
访问
等级
747
积分
粉丝
获赞
评论
收藏
私信
关注
热门文章
bcrypt加密算法
28626
redis的java客户端jedis 2.1.0版本使用备忘
8054
nutch 1.4 的增量爬取(recrawl)脚本
4644
【推荐】使用bitnami来搭建自己的server
4628
RESTful接口设计---读《RESTful Web Services Cookbook》笔记
4457
分类专栏
爬虫和搜索
2篇
Web开发
5篇
算法
Nosql/mysql
2篇
云计算/虚拟化
1篇
架构学习
3篇
Linux
1篇
其他
4篇
运维
2篇
Python
3篇
推荐系统
数据挖掘
消息队列
1篇
最新评论
【推荐】使用bitnami来搭建自己的server
Tisfy:
辛苦辛苦
processmaker在与cas做SSO集成时需要做的修改
zxwbbb:
大湿,可否教我使用processMaker?
processmaker在与cas做SSO集成时需要做的修改
zxwbbb:
高手,可否教我如何使用pm?
nutch 1.4 的增量爬取(recrawl)脚本
WEBJK:
博主你好,不知你是否有时间和兴趣做一些nutch+Solr方面的工作呢,请联系 guruface@outlook.com, 谢谢!
nutch 1.4 的增量爬取(recrawl)脚本
lspanchong
回复
iterjpnic:
hadoop的配置文件是在*.job文件中,还是单独在conf上当中?
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
bcrypt加密算法
web.py使用过程中的备忘
最佳日志实践
2014年6篇
2013年2篇
2012年12篇
目录
目录
分类专栏
爬虫和搜索
2篇
Web开发
5篇
算法
Nosql/mysql
2篇
云计算/虚拟化
1篇
架构学习
3篇
Linux
1篇
其他
4篇
运维
2篇
Python
3篇
推荐系统
数据挖掘
消息队列
1篇
目录
评论 2
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
iterjpnic
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值