diff --git a/backend/app/routers/keycloak.py b/backend/app/routers/keycloak.py index bc244618a..1f0ac5128 100644 --- a/backend/app/routers/keycloak.py +++ b/backend/app/routers/keycloak.py @@ -1,6 +1,7 @@ import json import logging from secrets import token_urlsafe +from typing import Optional import requests from app.config import settings @@ -123,8 +124,10 @@ async def auth(code: str) -> RedirectResponse: @router.get("/token") -async def token(code: str): - return await get_token(code) +async def token(code: str, redirect_uri: Optional[str] = None): + return await get_token( + code, redirect_uri=redirect_uri or settings.auth_redirect_uri + ) @router.get("/refresh_token") diff --git a/backend/app/routers/utils.py b/backend/app/routers/utils.py index 5e345a6e8..b5a3c6a1c 100644 --- a/backend/app/routers/utils.py +++ b/backend/app/routers/utils.py @@ -40,12 +40,12 @@ async def save_refresh_token(refresh_token: str, email: str): await token_created.insert() -async def get_token(code: str): +async def get_token(code: str, *, redirect_uri: str = settings.auth_redirect_uri): # get token from Keycloak token_body = keycloak_openid.token( grant_type="authorization_code", code=code, - redirect_uri=settings.auth_redirect_uri, + redirect_uri=redirect_uri, ) access_token = token_body["access_token"] diff --git a/frontend/src/openapi/v2/services/AuthService.ts b/frontend/src/openapi/v2/services/AuthService.ts index fbbf716cd..ecac0e7ff 100644 --- a/frontend/src/openapi/v2/services/AuthService.ts +++ b/frontend/src/openapi/v2/services/AuthService.ts @@ -91,17 +91,20 @@ export class AuthService { /** * Token * @param code + * @param redirectUri * @returns any Successful Response * @throws ApiError */ public static tokenApiV2AuthTokenGet( code: string, + redirectUri?: string, ): CancelablePromise { return __request({ method: 'GET', path: `/api/v2/auth/token`, query: { 'code': code, + 'redirect_uri': redirectUri, }, errors: { 422: `Validation Error`, diff --git a/openapi.json b/openapi.json index 849fee1f2..c05e10500 100644 --- a/openapi.json +++ b/openapi.json @@ -12074,6 +12074,15 @@ }, "name": "code", "in": "query" + }, + { + "required": false, + "schema": { + "title": "Redirect Uri", + "type": "string" + }, + "name": "redirect_uri", + "in": "query" } ], "responses": {