Hadoop HDFS over HTTP 2.4.1 - Using HTTP Tools

Security

开箱即可用的HttpFS既支持pseudo认证,也支持Kerberos HTTP SPNEGO认证。

Pseudo Authentication

用Pseudo认证时,用户名必须在HttpFS URL的查询参数里通过user.name=<USERNAME>指定。例如:

[html]  view plain copy
  1. $ curl"http://<HTTFS_HOST>:14000/webhdfs/v1?op=homedir&user.name=babu"  

Kerberos HTTP SPNEGOAuthentication

Kerberos HTTP SPNEGO认证需要一个支持KerberosHTTP SPNEGO协议的工具或者库。

重要的:如果使用curl,curl的版本必须支持GSS(如果支持的话,curl –v命令会打印出“GSS”)。

例如:

[html]  view plain copy
  1. $ kinit  
  2. Please enter the password for tucu@LOCALHOST:  
  3. $ curl --negotiate -u foo "http://<HTTPFS_HOST>:14000/webhdfs/v1?op=homedir"  
  4. Enter host password for user 'foo':  

注意:--negotiate 需要-u 用户选项,但是它不使用。当被要求输入密码时直接按回车,使用任何的值作为User都将被忽略。

Remembering Who I Am (Establishingan Authenticated Session)

在大多数的认证机制中,Hadoop HTTP认证机制只认证用户一次,给其一个短暂的Token,为后续的请求提供认证验证凭证。这个Token记录在HTTP Cookie中。

当使用像curl这样的工具时,Token必须在第一次为第一次请求做认证时被存储,在后续的请求中这个Token都要提交。使用curl的-b和-c选项,可以发送和保存必要的HTTP Cookie信息。

例如,第一次请求被认证时应该保存接收到的HTTP Cookie。

用Pseudo认证:

  
  
  
  
[html] view plain copy
  1. $ curl -c ~/.httpfsauth "http://<HTTPFS_HOST>:14000/webhdfs/v1?op=homedir&user.name=babu"  

用Kerberos HTTP SPNEGO认证:

[html]  view plain copy
  1. $ curl --negotiate -u foo -c ~/.httpfsauth "http://<HTTPFS_HOST>:14000/webhdfs/v1?op=homedir"  

然后,后续的操作转发先前接收到的HTTP Cookie:

  
  
  
  
[html] view plain copy
  1. $ curl -b ~/.httpfsauth "http://<HTTPFS_HOST>:1400

你可能感兴趣的:(Hadoop HDFS over HTTP 2.4.1 - Using HTTP Tools)