I am trying to access HBase on a kerberized Thrift server. What I am trying to achieve is very simple, to get a list of the table names via python script.
As I can ssh to the server and list the tablenames via hbase shell, I am 100% sure that I am properly authenticated via Kerberos, because without any ticket on cache or with tickets to another realm, I simply can't access. There might be another thing to mention: as I ssh to the server, it asks for my LDAP username and password too and I provide them.
The code snippet I used is this:
thriftServer = 'abc.xcorp.net' #censored but a domain name like this, also tried with IP thriftPort = 9090 saslServiceName = 'hbase'
If I use TSaslClientTransport at index #1, I receive HTTP 400 as I try opening the transport (#3). If I use TBufferedTransport or TFramedTransport instead, that line is passed! But I get HTTP 400 at index #4 instead.
Tried combinations of Buffered and Framed with Sasl too:
transport = TTransport.TSaslClientTransport(sock, thriftServer, saslServiceName) transport = TTransport.TBufferedTransport(transport) # also tried with TFramedTransport
transport = TTransport.TBufferedTransport(sock) # also tried with TFramedTransport transport = TTransport.TSaslClientTransport(transport, thriftServer, saslServiceName)
and received 400 again as I try opening the transport (#3)
I also tried using CompactProtocol at index #2, and I get "Bad protocol id in the message"
(protocol_id in message: 72 / expected (default): 130)