重要: ブラウザはHTTP Kerberos SPNEGOをサポートしている必要があります。たとえば、FirefoxやInternet Explorerなどです。
Firefoxの場合、about:config
ページをロードして低レベル構成ページにアクセスします。次に、network.negotiate-auth.trusted-uris
設定に移動し、HTTP Kerberos SPNEGOで保護されているWebサーバーのホスト名またはドメインを追加します(複数のドメインとホスト名を使用する場合は、カンマで区切ります)。
curl
を使用してHadoop Authで保護された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("https://127.0.0.1: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プリンシパルとkeytabファイルを指定する必要があります)。詳細については、構成ドキュメントを参照してください。
mvn package
コマンドを実行して、WebアプリケーションWARファイルを作成します。
WARファイルをサーブレットコンテナにデプロイします。たとえば、Tomcatを使用している場合は、WARファイルをTomcatのwebapps/
ディレクトリにコピーします。
サーブレットコンテナを起動します。
curl
を使用してサーバーにアクセスするcurl
を使用して、保護されたリソースへのアクセスを試みます。保護されたリソースは次のとおりです。
$ kinit Please enter the password for tucu@LOCALHOST: $ curl https://127.0.0.1:8080/hadoop-auth-examples/anonymous/who $ curl https://127.0.0.1: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=https://127.0.0.1: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] ....