重要提示:浏览器必须支持 HTTP Kerberos SPNEGO。例如,Firefox 或 Internet Explorer。
对于 Firefox,通过加载 about:config
页面访问低级别配置页面。然后转到 network.negotiate-auth.trusted-uris
首选项,并添加 HTTP Kerberos SPNEGO 保护的 Web 服务器的主机名或域(如果使用多个域和主机名,请使用逗号分隔)。
curl
访问 Hadoop 身份验证保护的 URL重要提示:curl
版本必须支持 GSS,运行 curl -V
。
$ curl -V curl 7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8l zlib/1.2.3 Protocols: tftp ftp telnet dict ldap http file https ftps Features: GSS-Negotiate IPv6 Largefile NTLM SSL libz
使用 kinit 登录到 KDC,然后使用 curl
获取受保护的 URL
$ kinit Please enter the password for tucu@LOCALHOST: $ curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt http://$(hostname -f):8080/hadoop-auth-examples/kerberos/who Enter host password for user 'tucu': Hello Hadoop Auth Examples!
--negotiate
选项在 curl
中启用 SPNEGO。
-u :
选项是必需的,但用户被忽略(使用已 kinit 的主体)。
-b
和 -c
用于存储和发送 HTTP Cookie。
使用 AuthenticatedURL
类获取经过身份验证的 HTTP 连接
... URL url = new URL("http://localhost:8080/hadoop-auth/kerberos/who"); AuthenticatedURL.Token token = new AuthenticatedURL.Token(); ... HttpURLConnection conn = new AuthenticatedURL().openConnection(url, token); ... conn = new AuthenticatedURL().openConnection(url, token); ...
下载 Hadoop-Auth 的源代码,示例位于 src/main/examples
目录中。
编辑 hadoop-auth-examples/src/main/webapp/WEB-INF/web.xml
并为针对 Kerberos 配置的 AuthenticationFilter
定义设置正确的配置初始化参数(必须指定正确的 Kerberos 主体和密钥表文件)。有关详细信息,请参阅 配置文档。
通过运行 mvn package
命令创建 Web 应用程序 WAR 文件。
在 servlet 容器中部署 WAR 文件。例如,如果使用 Tomcat,请将 WAR 文件复制到 Tomcat 的 webapps/
目录中。
启动 servlet 容器。
curl
访问服务器尝试使用 curl
访问受保护的资源。受保护的资源是
$ kinit Please enter the password for tucu@LOCALHOST: $ curl http://localhost:8080/hadoop-auth-examples/anonymous/who $ curl http://localhost:8080/hadoop-auth-examples/simple/who?user.name=foo $ curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt http://$(hostname -f):8080/hadoop-auth-examples/kerberos/who
$ kinit Please enter the password for tucu@LOCALHOST: $ cd examples $ mvn exec:java -Durl=http://localhost:8080/hadoop-auth-examples/kerberos/who .... Token value: "u=tucu,p=tucu@LOCALHOST,t=kerberos,e=1295305313146,s=sVZ1mpSnC5TKhZQE3QLN5p2DWBo=" Status code: 200 OK You are: user[tucu] principal[tucu@LOCALHOST] ....