diff --git a/README.md b/README.md index 2f1cd98..b629290 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,7 @@ Note that [gssapi](https://github.com/zenchild/gssapi) library must be available client = WebHDFS::Client.new('hostname', 14000) client.kerberos = true + client.kerberos_keytab = "/path/to/project.keytab" ## AUTHORS diff --git a/lib/webhdfs/client_v1.rb b/lib/webhdfs/client_v1.rb index 465f841..18cf151 100644 --- a/lib/webhdfs/client_v1.rb +++ b/lib/webhdfs/client_v1.rb @@ -23,7 +23,7 @@ class ClientV1 attr_accessor :ssl attr_accessor :ssl_ca_file attr_reader :ssl_verify_mode - attr_accessor :kerberos + attr_accessor :kerberos, :kerberos_keytab SSL_VERIFY_MODES = [:none, :peer] def ssl_verify_mode=(mode) @@ -51,6 +51,7 @@ def initialize(host='localhost', port=50070, username=nil, doas=nil, proxy_addre @ssl_verify_mode = nil @kerberos = false + @kerberos_keytab = nil end # curl -i -X PUT "http://:/webhdfs/v1/?op=CREATE @@ -303,7 +304,7 @@ def request(host, port, method, path, op=nil, params={}, payload=nil, header=nil if @kerberos require 'base64' require 'gssapi' - gsscli = GSSAPI::Simple.new(@host, 'HTTP') + gsscli = GSSAPI::Simple.new(@host, 'HTTP', @kerberos_keytab) token = nil begin token = gsscli.init_context