Windows访问Kerberos认证HDFS web
我们可以通过Window访问keberos安全认证的HDFS WebUI,如果Windows客户端没有进行kerberos主体认证会导致在HDFS WebUI中看不到HDFS目录,这时需要我们在Window客户端进行Kerberos主体认证,在Window中进行Kerberos认证时可以使用Kerberos官方提供的认证工具,该下载地址:
http://web.mit.edu/kerberos/dist/
以上msi文件也可以在资料中获取,名为”kfw-4.1-amd64.msi”,下载完成该keberos客户端后双击进行安装即可。
当Window kerberos客户端工具安装完成后,需要按照如下步骤进行配置才可以正确的进行Window 客户端kerberos主体认证。
1、配置krb5.ini
当keberos客户端安装完成后自动会在C:\ProgramData\MIT\Kerberos5路径中创建krb5.ini配置文件,我们需要配置该文件指定Kerberos服务节点及域信息,配置如下,该文件配置可以参考Kerberos服务端/etc/krb5.conf文件。
2、调整path环境变量
Kerberos客户端工具安装完成后会自动在Window环境变量path中加入“C:\Program Files\MIT\Kerberos\bin”,默认放在最后,当我们在window中进行Kerberos主体认证时需要输入kinit命令,该命令会和JDK中的kinit命令冲突,导致无法在CMD窗口内进行kinit认证,所以这里需要调整该条信息为path中的第一条,如下图示例:
3、cmd进行Kerberos主体认证
在window中打开cmd,进行kerberos主体认证,如下图:
经过以上认证,可以打开Kerberos客户端工具可以看到认证信息:
实际上我们也可以不在cmd中认证Kerberos主体,可以直接通过Kerberos客户端工具进行认证。操作如下:
4、配置浏览器访问HDFS WebUI
通过浏览器访问Kerberos认证的HDFS时需要对浏览器进行一些设置以支持Kerberos,目前支持较好的浏览器只有火狐。下面在火狐中进行设置以访问HDFS WebUI。
在火狐浏览器中输入“about:config”进入高级设置:
搜索“network.negotiate-auth.trusted-uris”并设置为HDFS NameNode节点,多个节点之间使用逗号分割,如下:
搜索“network.auth.use-sspi”并设置为false,如下:
设置完成后重启火狐浏览器进行HDFS访问即可。
注意:目前在Hadoop3.3.x版本后,通过浏览器访问Kerberos认证的HDFS服务,会出现“Failed to obtain user group information: java.io.IOException: Security enabled but user not authenticated by filter”错误,该错误目前是一个bug,出现于Hadoop3.1.x版本后, 如下: