我一直在研究Apache Pulsar的功能,对此我感到非常高兴。但是,我刚刚进入身份验证/授权,并且在Java管理客户端中遇到了一个奇怪的错误。

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

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

我收到此错误:

org.apache.pulsar.client.admin.PulsarAdminException$ServerSideErrorException: HTTP 501 Not Implemented

我不敢相信不会实现如此重要的功能,所以我猜该错误只会掩盖其他问题。

我创建了一个带有新名称空间的新租户(没有任何管理员角色)。我试图添加的角色只是虚构的,我不确定它必须首先在某个地方注册(但是我没有找到任何要做的事情)。我尝试分别授予消费或产生动作,并且同时授予它们,但没有任何效果。

在代理上没有配置任何超级用户,但是考虑到没有它我可以执行所有其他操作,因此只有超级用户才能执行此操作似乎很牵强。当前,所有呼叫均未认证。可能有问题吗?但这将引发相同的问题:为什么我不能做其他所有事情,只是不授予权限?

那我想念什么呢?

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

最佳答案

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


未启用授权

原因:HTTP 501未实现


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

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


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

09-05 17:59