開箱即用的 HttpFS 同時支援偽驗證和 Kerberos HTTP SPNEGO 驗證。
使用偽驗證時,使用者名稱必須指定在 HttpFS URL 的 user.name=<USERNAME>
查詢字串參數中。例如
$ curl "http://<HTTFS_HOST>:14000/webhdfs/v1?op=homedir&user.name=babu"
Kerberos HTTP SPNEGO 驗證需要支援 Kerberos HTTP SPNEGO 協定的工具或函式庫。
重要:如果使用 curl
,所使用的 curl
版本必須支援 GSS(curl -V
會列印出「GSS」,表示支援)。
例如
$ kinit Please enter the password for user@LOCALHOST: $ curl --negotiate -u foo "http://<HTTPFS_HOST>:14000/webhdfs/v1?op=homedir" Enter host password for user 'foo':
注意:--negotiate
需要 -u USER
選項,但不會使用它。將任何值用作 USER
,當要求輸入密碼時,按 [ENTER],因為密碼值會被忽略。
與大多數驗證機制一樣,Hadoop HTTP 驗證會驗證使用者一次,並發出一個短暫的驗證權杖,以在後續要求中顯示。此驗證權杖是一個已簽署的 HTTP Cookie。
在使用 curl
等工具時,必須在執行驗證的第一個要求中儲存驗證權杖,並在後續要求中提交。若要使用 curl 執行此操作,必須使用 -b
和 -c
選項來儲存和傳送 HTTP Cookie。
例如,執行驗證的第一個要求應儲存收到的 HTTP Cookie。
使用偽驗證
$ curl -c ~/.httpfsauth "http://<HTTPFS_HOST>:14000/webhdfs/v1?op=homedir&user.name=foo"
使用 Kerberos HTTP SPNEGO 驗證
$ curl --negotiate -u foo -c ~/.httpfsauth "http://<HTTPFS_HOST>:14000/webhdfs/v1?op=homedir"
然後,後續要求會轉發先前收到的 HTTP Cookie
$ curl -b ~/.httpfsauth "http://<HTTPFS_HOST>:14000/webhdfs/v1?op=liststatus"