5.4.2. 配置 LDAP 授权
LegacyLDAPSecuritySettingPlugin 安全设置插件读取之前由 LDAPAuthorizationMap 和 缓存LDAPAuthorizationMap 在 AMQ 6 中处理的安全信息,并将这些信息转换为对应的 AMQ 7 安全设置(如果可能)。
AMQ 6 和 AMQ 7 中的代理的安全实施与 AMQ 7 中的安全实施不完全匹配。因此,插件会在两个版本之间执行一些转换,以实现近乎相同的功能。
以下示例演示了如何配置插件。
流程
-
打开
<broker_instance_dir>/etc/broker.xml配置文件。 在
security-settings元素内,添加security-setting-plugin元素。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow class-name-
其实施为
org.apache.activemq.artemis.core.server.impl.LegacyLDAPSecuritySettingPlugin。 initialContextFactory-
用于连接到 LDAP 的初始上下文工厂。必须始终设置为
com.sun.jndi.ldap.LdapCtxFactory(即默认值)。 connectionURL-
使用 LDAP URL <ldap://Host:Port> 指定目录服务器的位置。您可以选择添加正斜杠
/,后面跟目录树中特定节点的可分辨名称(DN)来验证这个 URL。例如:ldap://ldapserver:10389/ou=system。默认值为ldap://localhost:1024。 connectionUsername-
打开与目录服务器的连接的用户的 DN。例如,
uid=admin,ou=system。目录服务器通常需要客户端显示用户名/密码凭据才能打开连接。 connectionPassword-
与
connectionUsername中的 DN 匹配的密码。在目录服务器中,在 Directory Information Tree (DIT)中,密码通常作为userPassword属性存储在对应的目录条目中。 connectionProtocol- 当前未使用.以后,此选项可能允许您选择连接到目录服务器的安全套接字层(SSL)。必须显式设置这个选项,因为它没有默认值。
身份验证指定绑定到 LDAP 服务器时使用的身份验证方法。这个参数的有效值为
simple(用户名和密码)或none(匿名)。默认值为simple。注意不支持 简单的身份验证和安全层(SASL)身份验证。
以上配置示例中未显示的其他设置有:
destinationBase-
指定子项为所有目标提供权限的节点的 DN。在这种情况下,DN 是一个字面值(即,不对属性值执行字符串替换)。例如,此属性的典型值为
ou=destinations,o=ActiveMQ,ou=system The defaultsvalue isou=destinations,o=ActiveMQ,ou=system。 filter-
指定 LDAP 搜索过滤器,用于查找任何目的地的权限。搜索过滤器会尝试匹配队列或主题节点的子项或子代之一。默认值为
(cn=*)。 roleAttribute-
指定与过滤器匹配的节点属性,该
过滤器的值是角色的 DN。默认值为uniqueMember。 adminPermissionValue-
指定与
admin权限匹配的值。默认值为admin。 readPermissionValue-
指定与
读取权限匹配的值。默认值为read。 writePermissionValue-
指定与
写入权限匹配的值。默认值为write。 enableListener-
指定是否启用自动接收 LDAP 服务器中进行的更新的监听程序,并实时更新代理的授权配置。默认值为
true。 mapAdminToManage指定是否将传统(即 AMQ 6)
管理权限。请参阅下表中的映射语义详情。默认值为权限映射到 AMQ 7 管理false。LDAP 中定义的队列或主题名称充当安全设置的"匹配",权限值从 AMQ 6 类型映射到 AMQ 7 类型,并且该角色按原样映射。由于 LDAP 中定义的队列或主题名称充当安全设置的匹配项,因此安全性设置可能无法如预期应用到 JMS 目的地。这是因为 AMQ 7 始终为 JMS 目的地添加前缀 "jms.queue." 或 "jms.topic."(根据需要)。
AMQ 6 的权限类型有三种
:读取、写入和管理员。ActiveMQ 网站描述了这些权限类型; 安全性.AMQ 7 有以下权限类型:
-
createAddress -
deleteAddress -
createDurableQueue -
deleteDurableQueue -
createNonDurableQueue -
deleteNonDurableQueue -
send -
使用 -
管理 browse下表显示了安全设置插件如何将 AMQ 6 权限类型映射到 AMQ 7 权限类型:
Expand AMQ 6 权限类型 AMQ 7 权限类型 读取
使用、浏览
write
send
admin
createAddress, deleteAddress, createDurableQueue, deleteDurableQueue, createNonDurableQueue, deleteNonDurableQueue, manage(如果
mapAdminToManage设为true)如下所述,在一些情况下,插件在 AMQ 6 和 AMQ 7 权限类型之间执行一些转换以实现等效:
-
默认情况下,映射不包括 AMQ 7
管理权限类型,因为 AMQ 6 中没有类似权限类型。但是,如果mapAdminToManage设为true,则插件会将 AMQ 6admin权限映射到 AMQ 7manage权限。 -
AMQ 6 中的
admin权限类型确定代理是否自动创建目的地(如果目标不存在),并且用户向其发送消息。如果用户有权向目的地发送消息,AMQ 7 会自动允许自动创建目的地。因此,默认情况下,插件会将旧管理权限映射到上面显示的 AMQ 7 权限。如果mapAdminToManage设为true,该插件还会将 AMQ 6admin权限映射到 AMQ 7manage权限。
-
默认情况下,映射不包括 AMQ 7
-
allowQueueAdminOnRead是否要将传统的读取权限映射到 createDurableQueue、createNonDurableQueue 和 deleteDurableQueue 权限,以便 JMS 客户端能够创建持久且不可更改的订阅,而无需 admin 权限。AMQ 6 中允许这样做。默认值为 false。
下表显示了当
allowQueueAdminOnRead为true时,安全设置插件如何将 AMQ 6 权限类型映射到 AMQ 7 权限类型:Expand AMQ 6 权限类型 AMQ 7 权限类型 读取
consume, browse, createDurableQueue, createNonDurableQueue, deleteDurableQueue
write
send
admin
createAddress, deleteAddress, deleteNonDurableQueue, manage(如果
mapAdminToManage设置为true)