Uploaded image for project: 'Phoenix'
  1. Phoenix
  2. PHOENIX-6414

Access to Phoenix from Python using SPNEGO

    XMLWordPrintableJSON

    Details

    • Flags:
      Patch

      Description

      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.

        Attachments

        1. phoenixdb.patch
          0.9 kB
          Carlos García Montoro

          Issue Links

            Activity

              People

              • Assignee:
                TrilceAC Carlos García Montoro
                Reporter:
                TrilceAC Carlos García Montoro
              • Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - 1h
                  1h
                  Remaining:
                  Remaining Estimate - 1h
                  1h
                  Logged:
                  Time Spent - Not Specified
                  Not Specified