java - 在 Apache Pulsar 中授予命名空间权限

标签 java messaging apache-pulsar

我已经研究 Apache Pulsar 的功能一段时间了,我很高兴。然而,我刚刚进入身份验证/授权阶段,在 Java 管理客户端中遇到了一个奇怪的错误。

虽然我能够执行各种操作,例如创建/删除租户、创建/删除命名空间、创建/删除分区主题、向租户添加管理员角色等,但在尝试使用向角色授予命名空间权限时

org.apache.pulsar.client.admin.Namespaces.grantPermissionOnNamespace()

我收到此错误:

org.apache.pulsar.client.admin.PulsarAdminException$ServerSideErrorException:HTTP 501 未实现

我不敢相信如此重要的功能不会被实现,所以我猜测这个错误只是掩盖了其他东西。

我使用新的命名空间创建了一个新租户(没有任何管理员角色)。我尝试添加的角色只是编造的,我不确定它是否必须首先在某个地方注册(但我没有找到任何可以做到这一点的东西)。我尝试分别授予消耗或生产操作并同时授予这两个操作,但没有任何效果。

代理上没有配置 super 用户,但考虑到我可以在没有 super 用户的情况下执行所有其他操作,似乎只有 super 用户才能执行此操作似乎有些牵强。目前,所有调用均未经过身份验证。这会是一个问题吗?但这会引发同样的问题:为什么我可以做其他所有事情,只是不授予权限?

那么我错过了什么?

我们正在运行 Pulsar 版本 2.5.0 以及 Java pulsar-client-admin Maven 工件版本 2.5.0。

最佳答案

好的,因此在尝试执行相同操作时,使用 pulsar admin CLI 会显示更多信息:

Authorization is not enabled

Reason: HTTP 501 Not Implemented

显然我错过了在代理配置中实际启用授权。由于我很好奇第一行来自哪里(因为我在实现中没有得到这一点),所以我运行了 CLI 源代码,结果发现 CLI 从 PulsarAdminException 中打印了 2 行:

System.err.println(e.getHttpError());
System.err.println();
System.err.println("Reason: " + e.getMessage());

好吧,对我来说似乎相反, getHttpError() 返回“未启用授权”和 getMessage()“HTTP 501 未实现”,但至少我现在知道发生了什么......

关于java - 在 Apache Pulsar 中授予命名空间权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61913550/

相关文章:

java.sql.SQLException : Parameter index out of range (1 > number of parameters, 即 0)。

java - 如何为 WildFly 服务器设置默认错误页面?

amazon-web-services - Amazon AWS,来自 SQS 队列的消息多次传递

jms - 是否有可以丢弃重复消息的企业消息队列(保留第一个值)?

java - Pulsar 消息监听器的多线程

java - 如何从 Hadoop 序列文件中获取最后修改日期?

java - 什么是取消引用可能的空指针?

Android 客户端使用 Spring 连接到 websocket 服务器

apache-pulsar - 删除/过期 Apache Pulsar 主题中所有消息的最有效方法是什么?

java - Apache pulsar : Error Checking/Getting Partition Metadata while Subscribing