对于已经设置 kerberos 权限的集群,访问各种组件的 HTTP 服务时会要求认证。如果客户端是 Windows,那么配置过程就比较复杂。
某些服务,例如 Apache Knox 通过转发的方式进行代理,可以进行 SPNEGO 鉴权。
我实现的是基于浏览器代理的方式修改请求头,并注入 token,以此完成鉴权。
HTTP 代理
HTTP 因为是明文传输,所以代理程序可以直接读取请求的内容。将内容完整转发,并将请求体返回,就完成了代理。
对于 HTTPS 这种情况,通过 CONNECT 请求的方式,让代理服务建立一条 tcp 连接隧道,通过更底层的协议,转发 HTTPS 流量。
SPNEGO 鉴权过程
对 HTTP Header 中的 Authorization 字段填入 token,服务器即可验证访问者的身份。