Skip to content

Commit 399ef57

Browse files
committed
Updated auth of http-triggered function
1 parent a1ab40a commit 399ef57

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

hvalfangst_function/function_app.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
import logging
21
import json
3-
import pandas as pd
4-
import azure.functions as func
2+
import logging
53
from io import StringIO
4+
5+
import azure.functions as func
6+
import jwt
7+
import pandas as pd
68
from sklearn.preprocessing import LabelEncoder
79

810
# Decree and declare our project as an Azure Function App subsidiary
@@ -60,10 +62,25 @@ def blob_trigger(inbound: func.InputStream, outbound: func.Out[str]):
6062
return f"Error: {str(e)}"
6163

6264

63-
@app.route(route="upload_csv", auth_level=func.AuthLevel.ANONYMOUS)
65+
def validate_jwt(token: str, audience: str) -> bool:
66+
try:
67+
decoded = jwt.decode(token, audience=audience, options={"verify_signature": False})
68+
# Optionally check claims like roles or scopes
69+
return True
70+
except Exception as e:
71+
logging.error(f"JWT validation failed: {e}")
72+
return False
73+
74+
75+
@app.route(route="upload_csv", auth_level=func.AuthLevel.FUNCTION)
6476
@app.blob_output(arg_name="outbound", path="hvalfangstcontainer/in/input.csv", connection="AzureWebJobsStorage")
6577
def upload_csv(req: func.HttpRequest, outbound: func.Out[str]) -> str:
6678
try:
79+
80+
token = req.headers.get("Authorization").split(" ")[1] # Extract Bearer token
81+
if not validate_jwt(token, audience="61b4a548-3979-48df-b2df-37dc4e5e0e02"):
82+
return func.HttpResponse("Unauthorized", status_code=401)
83+
6784
logging.info("Received HTTP request to upload CSV")
6885

6986
# Parse raw bytes derived from request body to string

0 commit comments

Comments
 (0)