Skip to content

Commit 4073248

Browse files
committed
enable integration with external keycloak clients
1 parent 97119b9 commit 4073248

File tree

4 files changed

+49
-5
lines changed

4 files changed

+49
-5
lines changed

backend/app/routers/keycloak.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,10 @@ async def auth(code: str) -> RedirectResponse:
123123

124124

125125
@router.get("/token")
126-
async def token(code: str):
127-
return await get_token(code)
126+
async def token(code: str, client_id: str, auth_redirect_uri: str):
127+
return await get_token(
128+
code, client_id=client_id, auth_redirect_uri=auth_redirect_uri
129+
)
128130

129131

130132
@router.get("/refresh_token")

backend/app/routers/utils.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import mimetypes
22
from typing import Optional
33

4+
from keycloak import KeycloakOpenID
5+
46
from app.config import settings
5-
from app.keycloak_auth import keycloak_openid
67
from app.models.files import ContentType
78
from app.models.tokens import TokenDB
89
from app.models.users import UserDB
@@ -40,12 +41,29 @@ async def save_refresh_token(refresh_token: str, email: str):
4041
await token_created.insert()
4142

4243

43-
async def get_token(code: str):
44+
async def get_token(
45+
code: str,
46+
*,
47+
server_url=settings.auth_server_url,
48+
client_id=settings.auth_client_id,
49+
realm_name=settings.auth_realm,
50+
client_secret_key=settings.auth_client_secret,
51+
auth_redirect_uri=settings.auth_redirect_uri,
52+
verify=True,
53+
):
54+
keycloak_openid = KeycloakOpenID(
55+
server_url=server_url,
56+
client_id=client_id,
57+
realm_name=realm_name,
58+
client_secret_key=client_secret_key,
59+
verify=verify,
60+
)
61+
4462
# get token from Keycloak
4563
token_body = keycloak_openid.token(
4664
grant_type="authorization_code",
4765
code=code,
48-
redirect_uri=settings.auth_redirect_uri,
66+
redirect_uri=auth_redirect_uri,
4967
)
5068

5169
access_token = token_body["access_token"]

frontend/src/openapi/v2/services/AuthService.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,17 +91,23 @@ export class AuthService {
9191
/**
9292
* Token
9393
* @param code
94+
* @param clientId
95+
* @param authRedirectUri
9496
* @returns any Successful Response
9597
* @throws ApiError
9698
*/
9799
public static tokenApiV2AuthTokenGet(
98100
code: string,
101+
clientId: string,
102+
authRedirectUri: string,
99103
): CancelablePromise<any> {
100104
return __request({
101105
method: 'GET',
102106
path: `/api/v2/auth/token`,
103107
query: {
104108
'code': code,
109+
'client_id': clientId,
110+
'auth_redirect_uri': authRedirectUri,
105111
},
106112
errors: {
107113
422: `Validation Error`,

openapi.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12074,6 +12074,24 @@
1207412074
},
1207512075
"name": "code",
1207612076
"in": "query"
12077+
},
12078+
{
12079+
"required": true,
12080+
"schema": {
12081+
"title": "Client Id",
12082+
"type": "string"
12083+
},
12084+
"name": "client_id",
12085+
"in": "query"
12086+
},
12087+
{
12088+
"required": true,
12089+
"schema": {
12090+
"title": "Auth Redirect Uri",
12091+
"type": "string"
12092+
},
12093+
"name": "auth_redirect_uri",
12094+
"in": "query"
1207712095
}
1207812096
],
1207912097
"responses": {

0 commit comments

Comments
 (0)