Carlos García Montoro created PHOENIX-6414:
----------------------------------------------

             Summary: Access to Phoenix from Python using SPNEGO
                 Key: PHOENIX-6414
                 URL: https://issues.apache.org/jira/browse/PHOENIX-6414
             Project: Phoenix
          Issue Type: Bug
          Components: queryserver
    Affects Versions: 5.0.0
            Reporter: Carlos García Montoro
         Attachments: phoenixdb.patch

When connecting to Phoenix from Python using "SPNEGO" as the authentication 
mechanism an exception occurs:

{{import phoenixdb}}
{{ import phoenixdb.cursor}}
{{ database_url = 'http://myphoenixdb:8765/'}}
{{ conn = phoenixdb.connect(database_url, autocommit=True, 
authentication="SPNEGO")}}

Causes this exception:

{{>>> conn = phoenixdb.connect(database_url, autocommit=True, 
authentication="SPNEGO")}}
{{venv/lib/python3.6/site-packages/phoenixdb/avatica/client.py:121: 
RuntimeWarning: Unexpected end-group tag: Not all data was converted}}
{{ if not err.ParseFromString(message.wrapped_message):}}
{{Traceback (most recent call last):}}
{{ File "<stdin>", line 1, in <module>}}
{{ File "venv/lib/python3.6/site-packages/phoenixdb/__init__.py", line 121, in 
connect}}
{{ return Connection(client, **kwargs)}}
{{ File "venv/lib/python3.6/site-packages/phoenixdb/connection.py", line 53, in 
__init__}}
{{ self.open()}}
{{ File "venv/lib/python3.6/site-packages/phoenixdb/connection.py", line 98, in 
open}}
{{ self._client.open_connection(self._id, info=self._phoenix_props)}}
{{ File "venv/lib/python3.6/site-packages/phoenixdb/avatica/client.py", line 
363, in open_connection}}
{{ response_data = self._apply(request)}}
{{ File "venv/lib/python3.6/site-packages/phoenixdb/avatica/client.py", line 
215, in _apply}}
{{ parse_error_protobuf(response_body)}}
{{ File "venv/lib/python3.6/site-packages/phoenixdb/avatica/client.py", line 
128, in parse_error_protobuf}}
{{ raise_sql_error(err.error_code, err.sql_state, err.error_message)}}
{{ File "venv/lib/python3.6/site-packages/phoenixdb/avatica/client.py", line 
96, in raise_sql_error}}
{{ raise errors.InternalError(message, code, sqlstate)}}
{{phoenixdb.errors.InternalError: ('', 0, '', None)}}

This problem is caused by the authentication mechanism because phoenixdb is 
using Kerberos 5 instead of SPNEGO.

To resolve the issue we have patched the package applying the idea behind the 
"Explicit Mechanism" described in [https://pypi.org/project/requests-gssapi/] 
when the authentication is SPNEGO. The attached file has the patch applied.

If you want, I can create a branch and pull request this change.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to