[Pulsar] 设置认证和鉴权
在 Pulsar 中,我们可以在 Broker 端设置认证和鉴权,让 Broker 对请求进行认证,并将认证所得到的 role 用作鉴权。本文将介绍 Pulsar 如何设置认证和鉴权。
认证
以 JWT 认证为例,在broker.conf
中,我们首先需要开启认证,并设置所需要的AuthenticationProvider
,我们也可以自定义实现AuthenticationProvider
。如下是设置 JWT 认证方式的例子:
除此之外,因为 Broker 之间也需要通信,所以我们需要为 broker 通信所使用的客户端设置认证的方式和认证参数:
此时,我们就完成了 JWT 认证的设置。不过目前还没有开启鉴权,所以认证成功的请求具有所有资源的所有操作权限。
鉴权
Pulsar 目前官方支持两种鉴权方式:默认的鉴权 PulsarAuthorization 以及多角色鉴权 MultiRolesAuthorization,多角色鉴权将对多个角色同时进行鉴权,当其中一个角色有权限时,则代表鉴权通过。用户也可以根据需求实现自己的鉴权方式。如下是 Pulsar 默认鉴权方式的设置:
这时 Broker 在进行认证和鉴权时,除了有 Proxy 与 Broker 所建立的连接的 authRole,也有 Client 的 originalPrincipal。在鉴权的过程中,会首先完成对 Client 所提供的 originalPrincipal 的鉴权,然后再进行 Proxy 所携带的 authRole 的鉴权,如果forwardAuthorizationCredentials
为 false,即 Proxy 不将 Client 的 AuthData 转发给 Broker,那么这时 Broker 只对 Proxy 的 authRole 鉴权。
我们也可以通过在 Broker 设置 ProxyRole,来强制让 Proxy 与 Broker 的连接都需要携带 Client 的 originalPrincipal,如下:
此时,我们就完成了 Broker 的认证和鉴权的设置。
版权声明: 本文为 InfoQ 作者【Zike Yang】的原创文章。
原文链接:【http://xie.infoq.cn/article/25d5d541a8d69f67d2c86dee3】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论