基于 hadoop RPC 协议开发的服务和客户端添加 kerberos 认证

本文介绍了如何在基于Hadoop RPC协议的服务端和客户端添加Kerberos认证。服务端在启动时利用NN的kerberos信息进行认证,并通过配置RPC服务器实例以启用kerberos。同时,通过调用RPC.SERVER的refreshServiceAcl接口更新ACL,确保hadoop.security.authorization和hadoop.security.authentication设为kerberos。客户端则需要将kerberos相关参数写入配置,并创建客户端实例以调用服务。

服务端:

这次开发的服务有两个前提设置:

1)是基于NN启动而启动的。

2)使用了 kerberos 认证。

3)使用自己设置的端口和进程单独服务。

所以,在服务启动时可以使用NN的kerberos 认证信息进行认证。在启动服务前,通过HADOOP 的配置文件获取到 principal 和 keyTabPath 并将 principal 的值赋于 CommonConfigurationKeys.HADOOP_SECURITY_SERVICE_USER_NAME_KEY 这个配置参数。

然后获取 RPC.server 的 实例,将相关的 hadoop的配置conf,protocol,instance,host,port,numHandlers 等参数配置,conf 以外的其他参数引用不需要 kerberos 相关的引入。

接着启动 RPC 服务即可。

接下来是最重要的,刷新服务端ACL

Refresh the service authorization ACL for the service handled by this server

注:保证 hadoop.security.authorization = true hadoop.security.authentication = kerberos。调用 RPC.SERVER 的 refreshServiceAcl 接口即可。refreshServiceAcl 中 conf 参数为 hadoop conf ,provider 是:new HDFSPolicyProvider()。

在 HDFSPolicyProvider 中添加:

你所写的 RPC 服务的class 和 ACL 的配置参数(参数名自定义即可,写入配置文件hadoop-policy.xml中)。

 

客户端:

   客户端和其他客户端的认证方式是一样的。

   1)需要将 kerberos 的相关参数写入 conf 中,如下图:

   

注:也可以设置为读取hadoop 的配置文件方式。

2)然后 创建UserGroupInformation对象。
trySasl 的结果为 true。
ugi AuthMethod Name 为 kerberos

3)创建 client 端,

atomicBoolean 要设置为 false

4)调用服务即可

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值