5.4.2. 配置 LDAP 授权
LegacyLDAPSecuritySettingPlugin
安全设置插件读取以前由 LDAPAuthorizationMap
和 cache LDAPAuthorizationMap
中处理的安全信息,并在可能的情况下将这些信息转换为对应的 AMQ 7 安全设置。
AMQ 6 和 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
。默认值为ou=destinations,o=ActiveMQ,ou=system
。 filter
-
指定 LDAP 搜索过滤器,该过滤器在查找任何类型的目的地时使用。搜索过滤器尝试匹配队列或主题节点的子子或后代。默认值为
(cn=*)
。 roleAttribute
-
通过
过滤器
指定节点的属性,其值为 role 的 DN。默认值为uniqueMember
。 adminPermissionValue
-
指定与
admin
权限匹配的值。默认值为admin
。 readPermissionValue
-
指定与
读取权限
匹配的值。默认值为。
writePermissionValue
-
指定与
写入权限
匹配的值。默认值为write
。 enableListener
-
指定是否启用自动接收 LDAP 服务器中的更新并实时更新代理的授权配置。默认值为
true
。 mapAdminToManage
指定是否将旧的(即 AMQ 6)
管理权限
映射到 AMQ 7管理权限
。请参阅下表中映射语义的详情。默认值为:false
。在 LDAP 中定义的队列或主题的名称充当安全设置的"匹配",权限值从 AMQ 6 类型映射到 AMQ 7 类型,角色映射为 is-is。由于 LDAP 中定义的队列或主题的名称充当安全设置的匹配项,因此安全设置可能无法按预期应用到 JMS 目的地。这是因为 AMQ 7 始终以"jms.queue."或"jms.topic."前缀 JMS 目的地。
AMQ 6 有三种权限类型 -
读取
、写入
和admin
。ActiveMQ 网站上介绍了这些权限类型; 安全。AMQ 7 有以下权限类型:
-
createAddress
-
deleteAddress
-
createDurableQueue
-
deleteDurableQueue
-
createNonDurableQueue
-
deleteNonDurableQueue
-
send
-
consume
-
管理
浏览
下表显示了安全设置插件如何将 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 7管理权限
。 -
AMQ 6 中的
admin
权限类型决定了代理是否自动创建目的地(如果目标不存在且用户向其发送信息)。如果用户有权限将消息发送到目的地,AMQ 7 会自动允许自动创建目标。因此,默认情况下,插件将旧管理权限
映射到上述 AMQ 7 权限。如果mapAdminToManage
设置为true
,则插件还会将 AMQ 6admin
权限映射到 AMQ 7管理权限
。
-
默认情况下,映射不包含 AMQ 7
-