Oracle BPM可以运行在主流的J2EE的应用平台(weblogic, websphere,jboss等),在企业的应用环境中通常我们会基于J2EE平台,开发各种企业应用系统,基于ALBPM开发企业的业务流程管理系统。很多情况下我们需要实现这些应用之间的SSO(单点登录)。

在本文中,我将讲述Oracle BPM的安全认证,如何绑定J2EE容器的安全认证,并传递到Oracle BPM WorkSpace,如果我们的应用统一的基于J2EE容器的全局安全性,那么这些应用之间就可以方便的实现SSO。

架构及场景描述

如上图所示:ALBPM的BPM Server引擎与ALBPM WorkSpace是完全分离的架构,ALBPM WorkSpace为一个标准的J2EE EAR或WAR包应用程序,WorkSpace可以发布到各种J2EE服务器。在上图中BPM Server使用ALBPM Directory(可以为数据库或LDAP)来存储用户的身份信息及用户的策略信息等。

在下面的例子中,我们将WorkSpace发布到Tomcat或Weblogic或Websphere服务器。之后我们配置这些服务器启动全局安全性,来统一的负责应用程序的用户身份认证,J2EE服务器通过JNDI Realm来设置认证的数据源(可以为数据库或LDAP)。之后认证信息传递到ALBPM WorkSpace,并可以同步外部认证数据源数据到ALBPM Server使用的ALBPM Directory,这样的复制可以方便之后我们在ALBPM Directory中设置用户的策略信息。具体架构如下图所示:

服务器信任的用户数据源

为样例:

通过配置JNDI-Realm

在Server.xml文件中,对JNDIRealm设置如下:

connectionURL="ldap://192.168.1.140/DC=scc,DC=labs,DC=fuegotech,DC=com"

connectionName="Administrator@scc.labs.fuegotech.com"

connectionPassword="password"

referrals="follow"

userBase=""

userSearch="(sAMAccountName={0})"

userRoleName="memberOf"

userSubtree="true"

roleBase=""

roleName="cn"

roleSearch="(memberOf={0})"

roleSubtree="true"

/>

JNDIRealm支持LDAP及数据库。上面的样例中使用的LDAP是Microsoft的活动目录,对于其他的目录服务器,我们可以通过了解LDAP的Schema来做相关的设置,比如:对于Sun One Ldap,参考设置如下:

其中重要的设置为userPattern,roleBase,roleSearch。通过Ldapsearch工具我们就可以查看应该如何成功设置userPattern,roleBase,roleSearch。在Ldapsearch显示的界面中,我们就可以看到为什么roleSearch设置成uniqueMember。

测试:启动Tomcat,在log日志中我们就可以看到Tomcat与ldap的连接信息:

2007-10-30 23:29:32 JNDIRealm[Catalina]: Closing directory context

2007-10-30 23:30:44 JNDIRealm[Catalina]: Connecting to URL ldap://localhost:389

2007-10-30 23:31:08 JNDIRealm[Catalina]: lookupUser(liuxuzhong)

2007-10-30 23:31:08 JNDIRealm[Catalina]:   dn=uid=liuxuzhong,ou=groups,dc=liuxuzhong,dc=com

2007-10-30 23:31:08 JNDIRealm[Catalina]:   validating credentials by binding as the user

2007-10-30 23:31:08 JNDIRealm[Catalina]:   binding as uid=liuxuzhong,ou=groups,dc=liuxuzhong,dc=com

2007-10-30 23:31:08 JNDIRealm[Catalina]: Username liuxuzhong successfully authenticated

2007-10-30 23:31:08 JNDIRealm[Catalina]:   getRoles(uid=liuxuzhong,ou=people,dc=liuxuzhong,dc=com)

2007-10-30 23:31:08 JNDIRealm[Catalina]:   Searching role base 'ou=groups,dc=liuxuzhong,dc=com' for attribute 'cn'

2007-10-30 23:31:08 JNDIRealm[Catalina]:   With filter expression '(uniqueMember=uid=liuxuzhong,ou=people,dc=liuxuzhong,dc=com)'

2007-10-30 23:31:08 JNDIRealm[Catalina]:   retrieving values for attribute cn

2007-10-30 23:31:08 JNDIRealm[Catalina]:   Returning 1 roles

2007-10-30 23:31:08 JNDIRealm[Catalina]:   Found role fuegos

为样例:

进入websphere控制台,启用全局安全性,配置相关的LDAP设置:

设置LDAP:

的认证容器设置

本章讲述了如何集成Oracle BPM Enterprise Work Portal的认证到应用服务器连接到后台LDAP平台的JNDI认证。

我们需要编辑Work Portal的web.xml文件,文件位于($FUEGO_ENT/webapps/portal/WEB-INF/web.xml)。在web.xml文件中添加如下的tag标签。

对于以上的XML我们添加的TAG的解析:

·我们使用了Form的方式进行认证。我们将可以自定义一个认证的表单样式来实现认证。在LDAP中通过认证的用户将传递到BPM的目录服务。对于认证表单使用J_security方式。这里我们使用了BPM自带的/jsp/loginContainer.jsp。实际上我们可以执行编写任何符合J_security规范的表单。

·我们需要在ldap服务器中定义一个角色,然后在所有需要使用BPM平台的用户赋予相应的角色。

设置Work portal使用容器认证:

设置ALBPM的Directory Service信任LDAP认证过的用户

在ALBPM Directory Service的数据库表“FUEGO_PARTTRUST”中,增加两条记录:

其中的SQLFDI51为我们在配置Directory Service的时候设置的数据库用户名。

在ALBPM Workspace中使用LDAP里面的用户名登录,在这里我们在测试之前,需要手工的通过process administrator在BPM directory中增加需要登录的用户名。

当然我们也支持LDAP自动复制到BPM Directory的方式。

将之前的web.xml相应区域修成为以下的配置,同时增加userauthentication.properties文件。就实现了自动复制。

# User Replication Debug

fuego.portal.containerAuthentication.userReplication.debug=true

# Fuego Directory Service Bindings to create new user.

fuego.portal.containerAuthentication.userReplication.dirServiceUser=root

fuego.portal.containerAuthentication.userReplication.dirServicePassword=password

# Fuego default roles to assign to new user. These roles must exist in Fuego's Directory

Service.

fuego.portal.containerAuthentication.userReplication.roles=R1;Run

# LDAP Bindings

fuego.portal.containerAuthentication.userReplication.additionalInfoFromLDAP=true

某些情况下,我们不仅仅需要复制用户的ID,可以通过以下的参数配置实现:

fuego.portal.containerAuthentication.userReplication.userRetrievalDataClass=fuego.portal.

servlet.deploy.UserPrincipalLoginUserJNDIRetrievalData

fuego.portal.containerAuthentication.userReplication.ldapConnectionFactory=com.sun.jndi.

ldap.LdapCtxFactory

fuego.portal.containerAuthentication.userReplication.ldapURL=ldap://192.168.0.135:389/dc

=victorysupport,dc=com

fuego.portal.containerAuthentication.userReplication.ldapConnectionUser=pvictory@victor

ysupport.com

fuego.portal.containerAuthentication.userReplication.ldapConnectionPassword=pvictory

fuego.portal.containerAuthentication.userReplication.ldapAuthentication=simple

fuego.portal.containerAuthentication.userReplication.ldapReferrals=ignore

# LDAP Implementation User Attributes Names to retrieve

fuego.portal.containerAuthentication.userReplication.userIdentifierAttribute=sAMAccount

Name

fuego.portal.containerAuthentication.userReplication.firstNameIdentifierAttribute=givenNa

me

fuego.portal.containerAuthentication.userReplication.lastNameIdentifierAttribute=sn

fuego.portal.containerAuthentication.userReplication.emailIdentifierAttribute=userPrincipalName

oracle bpm 表单,Oracle BPM 安全认证相关推荐

  1. oracle数据库表单,Oracle常用数据库系统表单以及SQL的整理

    因为最近涉及到了一些数据库的归档,备份等工作,所以一部分的重心放在了数据库上,毕竟之前对数据库的了解也只停留在了一般的建表,查询,最多最多再写一写触发器之类的东西. 通常都是自己瞎搞搞,也就懂一点皮毛 ...

  2. oracle新增表单,Oracle Retail(Retek)中Form生成列表方法总结

    本篇文章总结下oracle retail(retek)系统中实现列表的一些方法,据说该功能实现类似ebs中lookup,不过到目前为止我还没开发过ebs,就先不管retek中的列表实现和ebs中的列表 ...

  3. oracle外部表导入,oracle 外部表导入时间日期类型数据

    oracle 外部表导入时间日期类型数据以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 建立外部表目录 create d ...

  4. oracle查表文件大小,Oracle表空间使用大小查询

    1.查询一个表的物理空间数量:select segment_name,sum(bytes)/1024/1024 from user_extents where segment_type = 'TABL ...

  5. 生产上oracle扩展表空间,oracle基于裸设备(raw device)扩充表空间

    首先在oracle中查询表空间的使用情况,确认是哪个表空间不足. select df.tablespace_name "Tablespace",df.bytes/(1024*102 ...

  6. oracle连表图解,oracle 表连接方式解析

    一.表的连接 表的连接是指在一个SQL语句中通过表与表之间的关联,从一个或多个表检索出相关的数据.连接是通过SQL语句中FROM从句的多个表名,以及WHERE从句里定义的表之间的连接条件来实现的.如果 ...

  7. oracle 恢复表关联,ORACLE 12C使用RMAN进行表恢复

    ORACLE 12C使用RMAN进行表恢复 在12C以前的版本中,rman可以进行db,tablespace,datafile,block级别和TSPITR的恢复,12C引入了table级别的恢复 在 ...

  8. oracle自带的缓存,ORACLE缓存表与ORACLE缓存

    ORACLE缓存是把ORACLE近期查看的语句防止在ORACLE设定的缓存当中 ORACLE缓存表是把表某个表放置在缓存当中,缓存是ORACLE在内存中的一个分区 表缓存的设定 oracle中如何将表 ...

  9. oracle 多表导出,oracle多表导出dmp

    dmp动态多路径,中国广告DMP的出路在哪儿?,oracle多表导出dmp,oracle导入dmp文件 1 将数据库 orcl 完全导出,用户名 scott 密码 123 导出到 D:\daochu. ...

最新文章

  1. 硬链接和软链接使用,以及区别
  2. Java存储过程调用CallableStatement
  3. 处理网络故障常用的命令
  4. 图神经网络PGL助力国民级音乐App,创新迭代千亿级推荐系统(人工智能应用案例)
  5. 后视摄像头_鸡肋还是“真香”?流媒体后视镜到底值不值冲?
  6. 论文笔记_S2D.69_用于 LiDAR 里程计和建图的泊松曲面重建
  7. JAVA中ResourceBundle使用详解
  8. 嵌入式系统开发笔记16:CJ/T-188 冷热量表协议解析5
  9. [2021.8.18]深入理解PackageManagerService
  10. Java压缩图片大小
  11. TFTP文件传输协议
  12. 合租在北京,那些你不知道的事
  13. 特权同学IP核心中的学习
  14. 人过五十再有精力,也不要招惹这3个“荒唐事”,余生越混越差
  15. 杰里695N系列(soundbox)之 2.1-APP消息管理
  16. 快速提示:安装Laravel 5
  17. 电子元器件自动化测试系统|大功率分立器件测试系统NSAT-2000
  18. jperf linux运行,iperf for Linux 的安装与使用
  19. pixel什么意思_pixel是什么意思_pixel的翻译_音标_读音_用法_例句_爱词霸在线词典...
  20. 31岁程序媛两次提离职,两次被领导留下,网友:开弓没有回头箭

热门文章

  1. 阿里云服务器ECS新手搭建
  2. 【智能驾驶安全专题】功能安全与SOTIF如何融合实施?
  3. ps cc2018闪退解决方法
  4. Android安全防护之旅—只需要这几行代码让Android程序项目变得更加安全
  5. [bugku]web后面的部分 【脚本,正则 md5 】(疯狂补题qaq) 重点是搞会了 而不是写博客 m...
  6. 全能成熟稳定开源分布式存储Ceph破冰之旅-上
  7. 电源模块trim引脚
  8. 电源地线和大地的关系
  9. iqq for linux源代码,开源qq下载-Linux开源QQ 2012(iQQ)下载 v1.0.2 免费版-IT猫扑网
  10. sqlite数据库下载安装和初步操作和所遇到的问题near sqlite3:syntax error