From 54a9e958feaac1a59f86b881ecbdf7ac99dc27b3 Mon Sep 17 00:00:00 2001 From: swevm Date: Mon, 4 Jan 2021 12:39:38 +0100 Subject: [PATCH] Working decoding for JWT. Fixes: 401 error for all endpoints requiring JWT token In factory.py when JWT are encoded HS256 is specified as algorithm. Same need to be done for decoding. Making algorithm configurable is likely better but for now this works. --- fastapi_admin/depends.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/fastapi_admin/depends.py b/fastapi_admin/depends.py index 1fcdf24..a160cc3 100644 --- a/fastapi_admin/depends.py +++ b/fastapi_admin/depends.py @@ -14,12 +14,10 @@ from .factory import app auth_schema = HTTPBearer() -async def jwt_required( - request: Request, token: HTTPAuthorizationCredentials = Depends(auth_schema) -): +async def jwt_required(request: Request, token: HTTPAuthorizationCredentials = Depends(auth_schema)): credentials_exception = HTTPException(HTTP_401_UNAUTHORIZED) try: - payload = jwt.decode(token.credentials, app.admin_secret) + payload = jwt.decode(token.credentials, app.admin_secret, algorithms=["HS256"]) user_id = payload.get("user_id") if user_id is None: raise credentials_exception @@ -34,7 +32,7 @@ async def jwt_optional(request: Request): scheme, credentials = get_authorization_scheme_param(authorization) if credentials: try: - payload = jwt.decode(credentials, app.admin_secret) + payload = jwt.decode(credentials, app.admin_secret, algorithms=["HS256"]) user_id = payload.get("user_id") request.scope["user_id"] = user_id return user_id