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
元素。例如:<security-settings> <security-setting-plugin class-name="org.apache.activemq.artemis.core.server.impl.LegacyLDAPSecuritySettingPlugin"> <setting name="initialContextFactory" value="com.sun.jndi.ldap.LdapCtxFactory"/> <setting name="connectionURL" value="ldap://localhost:1024"/>`ou=destinations,o=ActiveMQ,ou=system` <setting name="connectionUsername" value="uid=admin,ou=system"/> <setting name="connectionPassword" value="secret"/> <setting name="connectionProtocol" value="s"/> <setting name="authentication" value="simple"/> </security-setting-plugin> </security-settings>
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 defaults
value 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 权限类型:
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 权限类型:AMQ 6 权限类型 AMQ 7 权限类型 读取
consume, browse, createDurableQueue, createNonDurableQueue, deleteDurableQueue
write
send
admin
createAddress, deleteAddress, deleteNonDurableQueue, manage(如果
mapAdminToManage
设置为true
)