将SPNEGO用于Web UI的Kerberos身份验证
将 SPNEGO(Simple and Protected GSSAPI Negotiation Mechanism)用于 Web UI 的 Kerberos 身份验证涉及多个步骤,具体步骤如下:
前提条件
- Kerberos 服务器配置:确保您的 Kerberos 服务器已正确配置,并且可以向用户和服务颁发票据。
- HBase 集群的 Kerberos 配置:您的 HBase 集群已经启用 Kerberos 身份验证。
步骤
生成服务主体和密钥表
- 为 Web 服务器生成一个 Kerberos 服务主体,例如
HTTP/your-web-server-hostname@YOUR.REALM.COM
。 - 使用
kadmin
命令在 Kerberos 服务器上创建此主体:
kadmin: addprinc -randkey HTTP/your-web-server-hostname@YOUR.REALM.COM
- 然后,使用
ktadd
命令导出该服务主体的密钥表文件:
kadmin: ktadd -k /path/to/your.keytab HTTP/your-web-server-hostname@YOUR.REALM.COM
- 为 Web 服务器生成一个 Kerberos 服务主体,例如
配置 Web 服务器
- 您需要配置 Web 服务器(如 Apache HTTP Server,Nginx 或其他支持的服务器)来支持 SPNEGO。常用的是使用 Apache HTTP Server 与
mod_auth_kerb
模块。 对于 Apache:
- 确保已安装
mod_auth_kerb
模块。 - 配置您的 Apache 主机文件以启用 SPNEGO:
<VirtualHost *:80>
ServerName your-web-server-hostname
<Location />
AuthType Kerberos
AuthName "Kerberos Login"
KrbAuthRealms YOUR.REALM.COM
Krb5KeyTab /path/to/your.keytab
KrbMethodNegotiate on
KrbMethodK5Passwd off
require valid-user
</Location>
</VirtualHost>
- 确保已安装
- 您需要配置 Web 服务器(如 Apache HTTP Server,Nginx 或其他支持的服务器)来支持 SPNEGO。常用的是使用 Apache HTTP Server 与
浏览器配置
- 确保 Web UI 用户的浏览器配置支持 SPNEGO 协议。
- 对于 Firefox:
- 打开
about:config
。 - 修改以下参数:
network.negotiate-auth.trusted-uris
:添加您的域或服务器地址。network.negotiate-auth.delegation-uris
:同上,允许委派。
- 打开
- 对于 Chrome:
- 启动 Chrome 时,添加命令行参数:
google-chrome --auth-server-whitelist="*.yourdomain.com" --auth-negotiate-delegate-whitelist="*.yourdomain.com"
- 启动 Chrome 时,添加命令行参数:
验证设置
- 清除浏览器缓存和已存在的Kerberos凭据(如果有)。
- 访问配置了 SPNEGO 的 Web UI。
- 确保被自动重定向到 Kerberos 验证页面并成功登录。
通过这些步骤,您应该能够为 HBase 的 Web UI 实现基于 SPNEGO 的 Kerberos 身份验证。注意,根据您的具体环境,这些步骤可能需要适当调整。