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服务器提供的领域。 用户的信息由更多的用户元数据组成,例如姓,地址等,如下图所示:
创建用户,因此来自用户和组管理API的不同服务和客户端组件均基于功能
功能用于公开或限制由不同服务和客户端组件提供的可用功能。 功能示例包括:
- 更新用户
- 删除用户
- 更新用户属性
- 创建组
- 分配组
- 分配角色
- 等等
每个安全管理提供程序必须指定一组支持的功能。 从前面的示例中,您可以注意到,Wildfly安全管理提供程序不支持用户属性的管理功能-用户仅由用户名组成。 另一方面,Keycloak提供程序确实支持此功能。
不同的视图和用户界面组件依赖于每个提供程序支持的功能,因此,如果使用中的提供程序不支持该功能,则UI不会提供用于管理该功能的视图。 例如,请考虑一个具体的提供者不支持删除用户–用户界面上的删除用户按钮将不可用。
请查看具体的服务提供商文档,以检查每种支持的所有功能,可以在此处找到默认功能。
如果任何默认提供程序都不支持安全环境,则可以构建自己的安全环境。 请保持有关有关如何创建自定义安全管理提供程序的其他文章的最新信息。
安装与设定
在考虑安装和设置步骤之前,请注意,默认情况下,以下Drools和jBPM发行版附带内置的,预安装的安全管理提供程序:
- Wildfly / EAP分发 –两种分发都使用Wildfly安全管理提供程序 ,该提供程序配置为使用默认领域文件应用程序users.properties和application-roles.properties
- Tomcat发行版 –使用为默认领域文件tomcat-users.xml的使用而配置的Tomcat安全管理提供程序
如果您的领域设置与默认设置不同,请阅读每个提供商的文档以应用具体设置。
另一方面,如果要构建自己的安全管理提供程序或需要将其包含在现有应用程序中,请考虑以下安装选项:
- 在现有的WAR发行版上启用安全管理功能
- 在现有或新项目中进行设置和安装(来自源)
注意:如果应用程序中未安装任何安全管理提供程序,则将没有可用的用户界面来管理安全领域。 安装和设置安全管理提供程序后,将自动启用用户和组管理用户界面,并可以从主菜单中对其进行访问。
在现有的WAR发行版上启用安全管理功能
给定Drools和jBPM工作台的现有WAR分发,请按照以下步骤安装和启用用户管理功能:
- 确保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
- 在WEB-INF / lib中添加供安全管理提供程序使用的具体库:
- 例如:WEB-INF / lib / uberfire-security-management-wildfly-6.4.0.Final..jar
- 如果您使用的具体提供程序需要更多库,则也要添加这些库。 请阅读每个提供商的文档以获取更多信息。
- 将整个内容替换为文件WEB-INF / classes / security-management.properties ,如果不存在,则创建它。 此文件上存在的设置取决于您使用的具体实现。 请阅读每个提供商的文档以获取更多信息。
- 如果要在Wildfly或EAP上进行部署,请检查WEB-INF / jboss-deployment-structure.xml是否需要任何更新。 请阅读每个提供商的文档以获取更多信息。
在现有或新项目中进行设置和安装(来自源)
如果您要构建基于Uberfire的Web应用程序,并且要包括用户和组管理功能,请阅读此说明 。
禁用安全管理功能
可以禁用安全管理功能,因此任何一种都不能使用任何服务或用户界面
- 从应用程序卸载安全管理提供程序如果在应用程序上未安装任何具体的安全管理提供程序,则将禁用用户和组管理功能,并且不会向用户提供任何服务或用户界面。
- 删除或注释安全管理配置文件删除或注释位于WEB-INF / classes / security-management.properties的配置文件中的所有行将禁用用户和组管理功能,并且不会向用户显示任何服务或用户界面。
用法
用户和组管理功能是使用两个不同的视角来呈现的,这些视角可从主“ 主页”菜单中获得(考虑到该功能已启用),如下所示:
阅读以下各节,以同时使用用户和组管理透视图。
用户管理
用户管理界面可从“ 主页”菜单中的“ 用户管理”菜单项获得。
该界面使用两个主面板显示:西面板上的用户资源管理器和中间面板上的用户编辑器:
除了列出所有用户之外,用户资源管理器还允许:在西面板上的用户资源管理器默认情况下列出了应用程序安全领域中存在的所有用户:
- 搜索用户
在搜索框中指定搜索模式时,用户列表将减少,仅显示与搜索模式匹配的用户。搜索模式取决于应用程序所使用的具体安全管理提供程序。 请阅读每个提供商的文档以获取更多信息。 - 创建新用户 : 通过单击“ 创建新用户”按钮,将在中央面板上显示一个新屏幕,以执行新用户创建。
中央面板上的用户编辑器用于创建,查看,更新或删除用户。 创建新用户或在用户资源管理器中单击现有用户后,将打开用户编辑器屏幕。
要查看现有用户 ,请在“用户资源管理器”中单击现有用户以打开“用户编辑器”屏幕。 例如,在使用Wildfly安全管理提供程序时查看管理员用户将在以下屏幕中显示:
相同的管理员用户视图操作,但是在使用Keycloak安全管理提供程序而不是Wildfly的提供程序时,将在以下屏幕中显示:
如您所见,用户编辑器在使用Keycloak sec时。 管理提供程序包括用户属性管理部分,但使用Wildfly的部分不存在。 因此请记住,用户界面上可用的信息和操作取决于每个提供程序的功能(如前几节所述),
在用户编辑器中查看用户将提供以下信息(如果提供程序支持的话):
- 用户名
- 用户的属性
- 分配的组
- 分配的角色
为了更新或删除现有用户 ,请在用户编辑器屏幕中,单击用户名旁边的“ 编辑”按钮:
更新用户的属性一旦以编辑方式显示用户编辑器,就可以执行不同的操作(如果使用的安全管理提供程序支持它):
可以更新现有的用户属性,例如用户名,姓氏等。如果安全管理提供程序支持,还可以创建新的属性。
- 更新分配的组单击“ 添加到组”按钮时, 将显示一个组选择弹出窗口: 该弹出屏幕允许用户搜索并选择或取消选择为当前正在编辑的用户分配的组。
- 更新分配的角色单击添加到角色按钮时, 将显示一个角色选择弹出窗口: 该弹出屏幕允许用户搜索和选择或取消选择为当前正在编辑的用户分配的角色。
- 修改用户密码
单击更改密码按钮时,将显示一个更改密码弹出屏幕:
- 删除用户
单击“ 删除”按钮,可以从领域中删除当前正在编辑的用户。
集团管理
可以从主菜单的“ 组管理”菜单项访问组管理界面。
该界面使用两个主面板显示:西面板上的分组浏览器和中间面板上的分组编辑器:
西面板上的“ 组资源管理器”默认情况下列出了应用程序安全领域中存在的所有组:
除了列出所有组,组浏览器还允许:
- 搜索组
在搜索框中指定搜索模式时,用户列表将减少,并且将仅显示与搜索模式匹配的用户。
搜索模式取决于应用程序所使用的具体安全管理提供程序。 请阅读每个提供商的文档以获取更多信息
- 建立新群组 通过单击创建新组按钮,中心面板上将出现一个新屏幕,以执行新组创建。 创建新组后,便可以为其分配用户:
中心面板上的组编辑器用于创建,查看或删除组。 创建新组后,或者单击组浏览器上的现有组,将打开组编辑器屏幕。
要查看现有组 ,请在“组资源管理器”中单击现有用户以打开“组编辑器”屏幕。 例如,在以下屏幕上查看销售组结果:
要删除现有组,只需单击“ 删除”按钮。
翻译自: https://www.javacodegeeks.com/2016/04/user-group-management-jbpm-drools-workbenches.html
jbpm 和 drools