Websocket session with desktop session token

Hi Experts,

I'm using the example for setting up a websocket connection. All works fine when I'm using the token that was requested in that example or from a separate platform session. However it's not connecting passing token from the established desktop session.

The error message: "Text":"TREP authentication failed (1026, Request for token validation failed:Authentication server did not contain \"active\" in response)"

Thanks

Marcin

Tagged:

Best Answer

  • Hi @marcin.bunkowski01

    I have confirmed with the EDAPI team as follows:

    Tokens used by the Data API Proxy to connect to the platform are neither supposed to be shared with the user nor used to establish other streaming connections (like RTO). Desktop sessions only support streaming connections opened through the Data API Proxy.

Answers

  • Hi @marcin.bunkowski01

    Not sure I fully understand - what is the desktop session you are referring to and how do you establish this? How are you extracting the token.

    Also, please confirm which 'example for websocket connection' you are using.

    The only understanding I have of a Desktop session is where you connect with the RDP Library to Eikon or Workspace running on your desktop. If that is the case, you cannot take a token from your desktop session (which is sourcing its data from Eikon via the Eikon API proxy) and somehow pass that to the RTO service that requires its own authentication and login process.


  • Hi @umer.nalla

    Thanks for looking into it. The example is taken from git.

    In the below example for auth_token I provide platform_session._access_token and it works but it fails with the desktop_session._access_token.

        def _send_login_request(self, auth_token, is_refresh_token):

    """
    Send login request with authentication token.
    Used both for the initial login and subsequent reissues to update the authentication token
    """
    login_json = {
    'ID': 1,
    'Domain': 'Login',
    'Key': {
    'NameType': 'AuthnToken',
    'Elements': {
    'ApplicationId': '',
    'Position': '',
    'AuthenticationToken': ''
    }
    }
    }

    login_json['Key']['Elements']['ApplicationId'] = app_id
    login_json['Key']['Elements']['Position'] = position
    login_json['Key']['Elements']['AuthenticationToken'] = auth_token

    # If the token is a refresh token, this is not our first login attempt.
    if is_refresh_token:
    login_json['Refresh'] = False

    self.web_socket_app.send(json.dumps(login_json))
    print("SENT on " + self.session_name + ":")
    print(json.dumps(login_json, sort_keys=True, indent=2, separators=(',', ':')))
  • Hi @marcin.bunkowski01

    That example is getting its tokens from the RDP Authentication gateway and then passing that to Refinitiv Real-Time Optimised as part of the Login message - whereas your desktop session is with Eikon Data API Proxy.

    So, as mentioned previously, I don't see how your Desktop token can be used as part of the Login message to the RTO service - it is no doubt tied to the RDP Auth gateway.

  • Thanks @umer.nalla now this is clear.