diff --git a/scripts/notebook.ipynb b/scripts/notebook.ipynb index 945a0d9..e493a97 100644 --- a/scripts/notebook.ipynb +++ b/scripts/notebook.ipynb @@ -114,7 +114,7 @@ " \"httpMethod\": \"POST\",\n", " \"resource\": \"/topics/{topic_name}\",\n", " \"pathParameters\": {\"topic_name\": \"public.cps.za.dlchange\"},\n", - " \"headers\": {\"bearer\": jwtToken},\n", + " \"headers\": {\"Authorization\": f\"Bearer {jwtToken}\"},\n", " \"body\": json.dumps({\n", " \"event_id\": \"JupyterEventId\",\n", " \"tenant_id\": \"JupyterTenantId\",\n", diff --git a/src/event_gate_lambda.py b/src/event_gate_lambda.py index 49eaa06..86faa0e 100644 --- a/src/event_gate_lambda.py +++ b/src/event_gate_lambda.py @@ -144,6 +144,16 @@ def post_topic_message(topicName, topicMessage, tokenEncoded): ) return {"statusCode": 202} if success else {"statusCode": 500} +def extract_token(eventHeaders): + # Initial implementation used bearer header directly + if "bearer" in eventHeaders: + return eventHeaders["bearer"] + + if "Authorization" in eventHeaders and eventHeaders["Authorization"].startswith("Bearer "): + return eventHeaders["Authorization"][len("Bearer "):] + + return "" # Will result in 401 + def lambda_handler(event, context): try: if event["resource"].lower() == "/api": @@ -156,7 +166,7 @@ def lambda_handler(event, context): if event["httpMethod"] == "GET": return get_topic_schema(event["pathParameters"]["topic_name"].lower()) if event["httpMethod"] == "POST": - return post_topic_message(event["pathParameters"]["topic_name"].lower(), json.loads(event["body"]), event["headers"]["bearer"]) + return post_topic_message(event["pathParameters"]["topic_name"].lower(), json.loads(event["body"]), extract_token(event["headers"])) if event["resource"].lower() == "/terminate": sys.exit("TERMINATING") return {"statusCode": 404}