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

Access to Phoenix from Python using SPNEGO

    XMLWordPrintableJSON

Details

    • 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

              TrilceAC Carlos García Montoro
              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