Point72 / csp-adapter-symphony

A csp adapter for symphony
https://github.com/Point72/csp-adapter-symphony/wiki
Apache License 2.0
7 stars 2 forks source link

Update auth to omit content-type headers and body #23

Open adamzuyang opened 11 hours ago

adamzuyang commented 11 hours ago

Describe the bug Symphony recently made a release that changed how an invalid request is handled. This causes issues with session creation.

To Reproduce Sending empty body to POST /sessionauth/v1/authenticate results in either a 401 response (if a content-type header is sent) or a 500 response (if no header is sent).

E.g., the following results in a 401 response:

def _client_cert_post(host: str, request_url: str, cert_file: str, key_file: str) -> str:
    request_headers = {"Content-Type": "application/json"}

    context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
    context.load_cert_chain(certfile=cert_file, keyfile=key_file)
    connection = http.client.HTTPSConnection(host, port=443, context=context)
    connection.request(
        method="POST",
        url=request_url,
        headers=request_headers,
        body=json.dumps({}),
    )
    response = connection.getresponse()

    if response.status != 200:
        print(response.read().decode("utf-8"))
        raise Exception(
            f"Cannot connect for symphony handshake to https:{host}{request_url}: {response.status}:{response.reason}"
        )
    data = response.read().decode("utf-8")

    return json.loads(data)

Expected Behavior We expect tokens to be returned as in https://rest-api.symphony.com/main/bot-authentication/session-authenticate

Error Message 401 or 500 response from Symphony

Runtime Environment CSP: 0.0.5 SYS: 3.11.9 | packaged by conda-forge | (main, Apr 19 2024, 18:36:13) [GCC 12.3.0] SYS platform: Linux

Additional context Without authentication tokens, this adapter becomes unusable with certificate and key.