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':
注: `-u USER` オプションは `--negotiate` で必要ですが、使用されません。 `USER` には任意の値を使用し、パスワードを要求されたら [ENTER] キーを押してください。パスワードの値は無視されます。
ほとんどの認証メカニズムと同様に、Hadoop HTTP 認証はユーザーを一度認証し、後続のリクエストで提示される短命の認証トークンを発行します。 この認証トークンは署名付き HTTP Cookie です。
`curl` などのツールを使用する場合、認証トークンは認証を行う最初のリクエストで保存し、後続のリクエストで送信する必要があります。 `curl` でこれを行うには、HTTP Cookie を保存および送信するための `-b` および `-c` オプションを使用する必要があります。
たとえば、認証を行う最初のリクエストは、受信した 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"