jbpm 和 drools_jBPM和Drools工作台中的用户和组管理

jbpm 和 drools

介绍

本文讨论了一项新功能,该功能允许使用集成在jBPM和Drools Workbenches中的直观友好的用户界面来管理应用程序的用户和组。

用户和组管理

用户和组管理

在安装,设置和使用此功能之前,本文讨论了一些以前的概念,需要进一步理解才能进一步使用。

因此,本文分为以下几节:

  • 安全管理提供者和功能
  • 安装与设定
  • 用法

笔记:

  • 版本6.4.0.Final中包含此功能。
  • 可用资源在这里 。

安全管理提供商

通常通过使用领域来提供安全环境。 领域用于限制对不同应用程序资源的访问。 因此,领域包含有关用户,组,角色,权限以及任何其他相关信息的信息。

在大多数典型场景中,应用程序的安全性委派给容器的安全性机制,该机制同时消耗给定领域。 必须考虑存在多个领域实现,例如,Wildfly提供了基于application-users.properties / application-roles.properties文件的领域,Tomcat提供了基于tomcat-users.xml文件的领域,等等。请记住,没有单一的安全领域可依赖,在每个安装中它可以有所不同。

jBPM和Drools工作台也不例外,它们建立在顶级Uberfire框架 (又名UF)上,该框架还将授权和身份验证委派给基础容器的安全环境,因此使用的领域由具体的部署配置提供。

安全管理提供商

由于必须支持潜在的不同安全环境,因此用户和组管理提供了定义良好的管理服务API,并带有一些默认内置
安全管理提供者安全管理提供程序是给定领域的具体用户和组管理服务实现的正式名称。

目前,默认情况下,可以使用三个安全管理提供程序:

  • Wildfly / EAP安全管理提供程序 –基于属性文件的领域。
  • Tomcat安全管理提供程序 –基于XML文件的领域。
  • Keycloak安全管理提供程序 –用于管理基于Keycloak的领域。 该提供程序包含在当前正在开发的下一个7.0系列的技术预览中。

保持有关新版本的新安全管理提供程序的更新。 如果您的环境中没有适合的默认值,则可以轻松构建和注册自己的安全管理提供程序。

安全管理提供程序功能

每个安全领域可以提供支持不同的操作。 例如,考虑基于属性文件使用Wildfly领域, applications-users.properties的内容如下:

admin=207b6e0cc556d7084b5e2db7d822555c
salaboy=d4af256e7007fea2e581d539e05edd1b
maciej=3c8609f5e0c908a8c361ca633ed23844
kris=0bfd0f47d4817f2557c91cbab38bb92d
katy=fd37b5d0b82ce027bfad677a54fbccee
john=afda4373c6021f3f5841cd6c0a027244
jack=984ba30e11dda7b9ed86ba7b73d01481
director=6b7f87a92b62bedd0a5a94c98bd83e21
user=c5568adea472163dfc00c19c6348a665
guest=b5d048a237bfd2874b6928e1f37ee15e
kiewb=78541b7b451d8012223f29ba5141bcc2
kieserver=16c6511893651c9b4b57e0c027a96075

如您所见,它基于键值对,其中键是用户名,而值是用户密码的哈希值。 因此,仅通过键,用户名,名称,地址等来定义用户。

另一方面,请考虑使用Keycloak服务器提供的领域。 用户的信息由更多的用户元数据组成,例如姓,地址等,如下图所示:

admin_user_view

管理员用户使用Keycloak秒进行编辑。 管理提供者

创建用户,因此来自用户和组管理API的不同服务和客户端组件均基于功能
功能用于公开或限制由不同服务和客户端组件提供的可用功能。 功能示例包括:

  • 更新用户
  • 删除用户
  • 更新用户属性
  • 创建组
  • 分配组
  • 分配角色  
  • 等等

每个安全管理提供程序必须指定一组支持的功能。 从前面的示例中,您可以注意到,Wildfly安全管理提供程序不支持用户属性的管理功能-用户仅由用户名组成。 另一方面,Keycloak提供程序确实支持此功能。

不同的视图和用户界面组件依赖于每个提供程序支持的功能,因此,如果使用中的提供程序不支持该功能,则UI不会提供用于管理该功能的视图。 例如,请考虑一个具体的提供者不支持删除用户–用户界面上的删除用户按钮将不可用。

请查看具体的服务提供商文档,以检查每种支持的所有功能,可以在此处找到默认功能。

如果任何默认提供程序都不支持安全环境,则可以构建自己的安全环境。 请保持有关有关如何创建自定义安全管理提供程序的其他文章的最新信息。

安装与设定

在考虑安装和设置步骤之前,请注意,默认情况下,以下Drools和jBPM发行版附带内置的,预安装的安全管理提供程序:

  • Wildfly / EAP分发 –两种分发都使用Wildfly安全管理提供程序 ,该提供程序配置为使用默认领域文件应用程序users.propertiesapplication-roles.properties
  • Tomcat发行版 –使用为默认领域文件tomcat-users.xml的使用而配置的Tomcat安全管理提供程序

如果您的领域设置与默认设置不同,请阅读每个提供商的文档以应用具体设置。

另一方面,如果要构建自己的安全管理提供程序或需要将其包含在现有应用程序中,请考虑以下安装选项:

  • 在现有的WAR发行版上启用安全管理功能
  • 在现有或新项目中进行设置和安装(来自源)

注意:如果应用程序中未安装任何安全管理提供程序,则将没有可用的用户界面来管理安全领域。 安装和设置安全管理提供程序后,将自动启用用户和组管理用户界面,并可以从主菜单中对其进行访问。

在现有的WAR发行版上启用安全管理功能

给定Drools和jBPM工作台的现有WAR分发,请按照以下步骤安装和启用用户管理功能:

  1. 确保WEB-INF / lib上存在以下库:
    • WEB-INF / lib / uberfire-security-management-api-6.4.0.Final..jar
    • WEB-INF / lib / uberfire-security-management-backend-6.4.0.Final..jar
  2. WEB-INF / lib中添加供安全管理提供程序使用的具体库:
    • 例如:WEB-INF / lib / uberfire-security-management-wildfly-6.4.0.Final..jar
    • 如果您使用的具体提供程序需要更多库,则也要添加这些库。 请阅读每个提供商的文档以获取更多信息。
  3. 将整个内容替换为文件WEB-INF / classes / security-management.properties ,如果不存在,则创建它。 此文件上存在的设置取决于您使用的具体实现。 请阅读每个提供商的文档以获取更多信息。
  4. 如果要在Wildfly或EAP上进行部署,请检查WEB-INF / jboss-deployment-structure.xml是否需要任何更新。 请阅读每个提供商的文档以获取更多信息。

在现有或新项目中进行设置和安装(来自源)

如果您要构建基于Uberfire的Web应用程序,并且要包括用户和组管理功能,请阅读此说明 。

禁用安全管理功能

可以禁用安全管理功能,因此任何一种都不能使用任何服务或用户界面

  • 从应用程序卸载安全管理提供程序如果在应用程序上未安装任何具体的安全管理提供程序,则将禁用用户和组管理功能,并且不会向用户提供任何服务或用户界面。
  • 删除或注释安全管理配置文件删除或注释位于WEB-INF / classes / security-management.properties的配置文件中的所有行将禁用用户和组管理功能,并且不会向用户显示任何服务或用户界面。

用法

用户和组管理功能是使用两个不同的视角来呈现的,这些视角可从主“ 主页”菜单中获得(考虑到该功能已启用),如下所示:

主菜单

用户和组管理菜单项

阅读以下各节,以同时使用用户和组管理透视图。

用户管理

用户管理界面可从“ 主页”菜单中的“ 用户管理”菜单项获得。

该界面使用两个主面板显示:西面板上的用户资源管理器和中间面板上的用户编辑器:

users_perspective

用户管理角度

除了列出所有用户之外,用户资源管理器还允许:在西面板上的用户资源管理器默认情况下列出了应用程序安全领域中存在的所有用户:

  • 搜索用户 users_explorer_search
    在搜索框中指定搜索模式时,用户列表将减少,仅显示与搜索模式匹配的用户。搜索模式取决于应用程序所使用的具体安全管理提供程序。 请阅读每个提供商的文档以获取更多信息。
  • 创建新用户create_new_user 通过单击“ 创建新用户”按钮,将在中央面板上显示一个新屏幕,以执行新用户创建。

中央面板上的用户编辑器用于创建,查看,更新或删除用户。 创建新用户或在用户资源管理器中单击现有用户后,将打开用户编辑器屏幕。

查看现有用户 ,请在“用户资源管理器”中单击现有用户以打开“用户编辑器”屏幕。 例如,在使用Wildfly安全管理提供程序时查看管理员用户将在以下屏幕中显示:

查看管理员用户

查看管理员用户

相同的管理员用户视图操作,但是在使用Keycloak安全管理提供程序而不是Wildfly的提供程序时,将在以下屏幕中显示:

使用Keycloak秒。管理提供者

使用Keycloak秒。 管理提供者

如您所见,用户编辑器在使用Keycloak sec时。 管理提供程序包括用户属性管理部分,但使用Wildfly的部分不存在。 因此请记住,用户界面上可用的信息和操作取决于每个提供程序的功能(如前几节所述),

在用户编辑器中查看用户将提供以下信息(如果提供程序支持的话):

  • 用户名
  • 用户的属性
  • 分配的组
  • 分配的角色

为了更新或删除现有用户 ,请在用户编辑器屏幕中,单击用户名旁边的“ 编辑”按钮:

编辑管理员用户

编辑管理员用户

更新用户的属性一旦以编辑方式显示用户编辑器,就可以执行不同的操作(如果使用的安全管理提供程序支持它):

user_attributes 可以更新现有的用户属性,例如用户名,姓氏等。如果安全管理提供程序支持,还可以创建新的属性。

  • 更新分配的组单击“ 添加到组”按钮时, 显示一个组选择弹出窗口: groups_selection 该弹出屏幕允许用户搜索并选择或取消选择为当前正在编辑的用户分配的组。
  • 更新分配的角色单击添加到角色按钮时, 显示一个角色选择弹出窗口: 角色选择 该弹出屏幕允许用户搜索和选择或取消选择为当前正在编辑的用户分配的角色。
  • 修改用户密码

单击更改密码按钮时,将显示一个更改密码弹出屏幕: 更改密码

  • 删除用户

单击“ 删除”按钮,可以从领域中删除当前正在编辑的用户。

集团管理

可以从菜单的“ 组管理”菜单项访问组管理界面。

该界面使用两个主面板显示:西面板上的分组浏览器和中间面板上的分组编辑器:

集团管理的角度

集团管理的角度

西面板上的“ 组资源管理器”默认情况下列出了应用程序安全领域中存在的所有组:

群组浏览器

群组浏览器

除了列出所有组,组浏览器还允许:

  • 搜索组

在搜索框中指定搜索模式时,用户列表将减少,并且将仅显示与搜索模式匹配的用户。

groups_explorer_search

使用搜索过滤的网上论坛浏览器

搜索模式取决于应用程序所使用的具体安全管理提供程序。 请阅读每个提供商的文档以获取更多信息

  • 建立新群组 create_group_button 通过单击创建新组按钮,中心面板上将出现一个新屏幕,以执行新组创建。 创建新组后,便可以为其分配用户:
    将用户分配给最近创建的组

    将用户分配给最近创建的组

中心面板上的组编辑器用于创建,查看或删除组。 创建新组后,或者单击组浏览器上的现有组,将打开组编辑器屏幕。

查看现有组 ,请在“组资源管理器”中单击现有用户以打开“组编辑器”屏幕。 例如,在以下屏幕上查看销售组结果:

查看销售组

查看销售组

删除现有组,只需单击“ 删除”按钮。

翻译自: https://www.javacodegeeks.com/2016/04/user-group-management-jbpm-drools-workbenches.html

jbpm 和 drools

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

剑指 Offer 01-----20

剑指 Offer 03. 数组中重复的数字 解题思路,使用STL中的set,逐个读入vector中的每一个元素,使用set进行对比,如果set中存在会返回1,这时直接返回该元素即可;如果set中没有可以insert这个元素到set&#xf…

python filter函数中写none_Python3基础 filter 第一个参数为NONE时 结果只返回为True的对象...

Python : 3.7.0OS : Ubuntu 18.04.1 LTSIDE : PyCharm 2018.2.4Conda : 4.5.11typesetting : Markdowncode"""Author : 行初心Date : 18-9-23Blog : www.cnblogs.com/xingchuxinGitee : gitee.com/zhichengjiu"""def main():# 过滤器# 通过 过滤…

从事java编程技能要求_5道Java视频课程,提高您的编程技能

从事java编程技能要求作为Web开发人员,跟上技术知识可能会很棘手。 新技术似乎每天都在弹出,而基本技术也看到了重复迭代的浪潮,增加了新的功能。 Java开发人员应该做什么? 这是在线教育平台发挥作用的地方。 它们可以帮助您快速…

常见算法核心思想

双指针算法 1.双指针算法主要是为了提高朴素算法的复杂度&#xff0c;即O(n^2)的算法&#xff0c;优化为O(n)的算法。 2.常见模板 for (int i 0, j 0; i < n; i ) {while (j < i && check(i, j)) j ;// 具体问题的逻辑 } 常见问题分类&#xff1a;(1) 对于…

sqlserver存储过程加锁后怎么解锁_【缺陷周话】第59期:重复加锁

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01;*声明&#xff1a;《缺陷周话》栏目系列文章由奇安信代码卫士团队原创出品。未经许可&#xff0c;禁止转载。转载请注明“转自奇安信代码卫士 www.codesafe.cn”。代码审计是使用静态分析发现源代码中安全缺陷的方法&…

idea添加jboss_如何将云持久存储添加到JBoss Cool Store

idea添加jboss我们一直在讨论为什么应用程序开发人员在App Dev Cloud Stack系列中不能再忽略其堆栈了。 带有JBoss Cool Store的App Dev Cloud 上个月&#xff0c;我们带来了一个完整的零售示例&#xff0c;其中的JBoss Cool Store运行在您的堆栈的OpenShift Enterprise层上&…

【技术解决方案】优化FFmpeg探测网络流时间过长的问题

场景要求 项目要求点播速度是300到500毫秒之间&#xff0c;现在最长的点播延时是1300毫秒&#xff08;有的时候甚至无法播放视频&#xff09;&#xff0c;生产环境是RTSP传输H264裸流数据&#xff0c;研究在接收到I帧的时候&#xff0c;开始出来图像&#xff0c;简化FFmpeg的调…

python画各种统计图的特点_Python 分词并画出词频统计图 | 睿鑫网络

import turtle##全局变量###词频排列显示个数count 10#单词频率数组-作为y轴数据data []#单词数组-作为x轴数据words []#y轴显示放大倍数-可以根据词频数量进行调节yScale 2#x轴显示放大倍数-可以根据count数量进行调节xScale 30################# Turtle Start #########…

ssm影城项目_影场与属性访问器界面

ssm影城项目卡尔迪亚&#xff08;Carl Dea&#xff09;最近跟踪了我的一篇名为“ 保存内存”的博客文章&#xff01; 为属性使用阴影字段 。 在他的博客中&#xff0c;他建议使用称为“属性访问器”的接口来消除大量使用样板代码所需的样板代码。 卡尔还提到他尚未用大量数据测…

【技术解决方案】优化FFmpeg编码器参数设置

FFmpeg x264编码参数对照表 x264 ffmpeg 说明 命令行 字段 命令行 字段 qp qp_constant cqp cqp 固定量化因子。取值范围0到51。 经常取值在20-40之间&#xff0c;越小质量 越好,要求的码率越高。0表示无损压缩 max-keyint i_keyint_max g gop_size …

python version翻译_python实现在线翻译功能

对于需要大量翻译的数据&#xff0c;人工翻译太慢&#xff0c;此时需要使用软件进行批量翻译。1.使用360的翻译def fanyi_word_cn(string):url"https://fanyi.so.com/index/search"#db_path ./db/tasks.dbForm_Data {}#这里输入要翻译的英文Form_Data[query] string…

java流写入数据库_Java 8:在2分钟内将智能流与数据库一起使用

java流写入数据库快速流媒体 当Java 8最终问世时&#xff0c;我和一些大学开始了一个开源项目&#xff0c;以利用Java 8的流库使整个Java / DB问题更进一步&#xff0c;以便将数据库表视为纯Java 8流。 速度诞生了&#xff01; 哇&#xff0c;现在我们可以做类型安全的数据库应…

【技术解决方案】RTP_UDP传输过程中数据丢失的解决方案

1. 从发送端解决(推荐) 适用条件: ①发送端是可以控制的.②微秒数量级的延迟可以接受 解决方法:发送时使用usleep(1)延迟1微秒发送,即发送频率不要过快,延迟1微妙发送,可以很好的解决这个问题.。 2.从接收端解决方法一 适用条件:①无法控制发送端发送数据的频率 解决方法:…

方法参数泛型_无参数泛型方法反模式

方法参数泛型最近&#xff0c;有关Java泛型的一个非常有趣的问题发布到Stack Overflow和reddit上。 请考虑以下方法&#xff1a; <X extends CharSequence> X getCharSequence() {return (X) "hello"; }尽管这种不安全的转换看起来有些古怪&#xff0c;并且您…

python文件读取写入实践_python文件写入实例分析

本文实例讲述了python文件写入的用法。分享给大家供大家参考。具体分析如下&#xff1a;Python中wirte()方法把字符串写入文件&#xff0c;writelines()方法可以把列表中存储的内容写入文件。ffile("hello.txt","w")li["hello world\n","he…

【H.264/AVC视频编解码技术】序章【编码的前世今生】

视频格式 关于视频格式的内容,在这里不进行赘述,详细学习可以参考视频格式 视频数据冗余 数据冗余的类型分为哪几种? 图像与视频在数字化过程,即模电转数电过程中会产生数据冗余。从数字信号的统计特征方面,一般将这些数据冗余分为空间冗余,时间冗余,信息熵冗余三大…

小米摄像头有onvif协议_监控摄像头完好但图像不行,肯定逃不过这10个问题

摄像头仅仅是视频监控系统的一部分&#xff0c;即使摄像头完好无损&#xff0c;监控画面也可能会出现不显示、卡顿、丢失等情况。想要彻底解决网络监控的问题&#xff0c;往往需要排查各个连接设备才可以判断。下面我们就总结了10个问题&#xff0c;彻底解决网络监控的问题。一…

java对话_您应该保持联系的十大高级Java对话

java对话在线讲座和视频是学习软件开发新事物的主要资源之一。 您可以找到Java专家与您分享他们的经验&#xff0c;而不必坐下来。 在下面的文章中&#xff0c;我们收集了10位我们最喜欢的演讲者和主题&#xff0c;我们相信每个Java开发人员都应该注意。 获取爆米花&#xff0…

【WebRTC---源码篇】(三)Windows/Linux音视频采集封装模块

视频采集相关类图 DeviceInfo接口提供了设备枚举相关功能。 NumberOfDevices枚举设备个数。 GetDeviceName获取某个设备名称。 GetCapability枚举某个设备所支持的所有能力(VideoCaptureCapability: 分辨率,最大帧率,颜色类型) VideoCaptureModule视频采集模块的基类: …

java设计单词英译汉小助手_拣单词|第八期第3天:第521528个单词宝藏

宝藏坚持每天拣单词积累你的词汇宝藏打好英语学习基本功怎么学&#xff1f;每天预留15分钟&#xff0c;积累你的词汇宝藏&#xff01;每周一、二、三&#xff0c;发布新单词每周四、五、六&#xff0c;乱序复习单词周日测试(仅限入群的学员)遇到新单词&#xff0c;你可以&#…