|
200 | 200 | } |
201 | 201 |
|
202 | 202 | if USE_OIDC: |
203 | | - log.info("Using OIDC authentication") |
| 203 | + print("Using OIDC authentication") |
204 | 204 | REST_FRAMEWORK["DEFAULT_AUTHENTICATION_CLASSES"] = [ |
205 | 205 | 'oidc_auth.authentication.JSONWebTokenAuthentication', |
206 | 206 | 'oidc_auth.authentication.BearerTokenAuthentication', |
207 | 207 | ] |
208 | 208 |
|
209 | | - OIDC_HOST = os.environ.get('OIDC_HOST', '') |
210 | | - OIDC_REALM = os.environ.get('OIDC_REALM', default='cogstack-realm') |
211 | | - OIDC_BACKEND_CLIENT_ID = os.environ.get('OIDC_BACKEND_CLIENT_ID', default='cogstack-medcattrainer-backend') |
212 | | - OIDC_BACKEND_CLIENT_SECRET = os.environ.get('OIDC_BACKEND_CLIENT_SECRET', default='') |
213 | | - OIDC_FRONTEND_CLIENT_ID = os.environ.get('OIDC_FRONTEND_CLIENT_ID', default='cogstack-medcattrainer-frontend') |
| 209 | + # Load OIDC configuration from environment |
| 210 | + KEYCLOAK_INTERNAL_SERVICE_URL = os.environ.get('KEYCLOAK_INTERNAL_SERVICE_URL') |
| 211 | + KEYCLOAK_REALM = os.environ.get('KEYCLOAK_REALM') |
| 212 | + KEYCLOAK_BACKEND_CLIENT_ID = os.environ.get('KEYCLOAK_BACKEND_CLIENT_ID') |
| 213 | + KEYCLOAK_BACKEND_CLIENT_SECRET = os.environ.get('KEYCLOAK_BACKEND_CLIENT_SECRET') |
| 214 | + KEYCLOAK_FRONTEND_CLIENT_ID = os.environ.get('KEYCLOAK_FRONTEND_CLIENT_ID') |
| 215 | + |
| 216 | + # Validate required OIDC configuration |
| 217 | + missing_vars = [] |
| 218 | + if not KEYCLOAK_INTERNAL_SERVICE_URL: |
| 219 | + missing_vars.append('KEYCLOAK_INTERNAL_SERVICE_URL') |
| 220 | + if not KEYCLOAK_REALM: |
| 221 | + missing_vars.append('KEYCLOAK_REALM') |
| 222 | + if not KEYCLOAK_BACKEND_CLIENT_ID: |
| 223 | + missing_vars.append('KEYCLOAK_BACKEND_CLIENT_ID') |
| 224 | + if not KEYCLOAK_BACKEND_CLIENT_SECRET: |
| 225 | + missing_vars.append('KEYCLOAK_BACKEND_CLIENT_SECRET') |
| 226 | + if not KEYCLOAK_FRONTEND_CLIENT_ID: |
| 227 | + missing_vars.append('KEYCLOAK_FRONTEND_CLIENT_ID') |
| 228 | + |
| 229 | + if missing_vars: |
| 230 | + error_msg = ( |
| 231 | + f"OIDC is enabled (USE_OIDC=1) but the following required " |
| 232 | + f"environment variables are missing or empty: {', '.join(missing_vars)}\n" |
| 233 | + f"Please set these variables in your environment configuration." |
| 234 | + ) |
| 235 | + log.error(error_msg) |
| 236 | + sys.exit(error_msg) |
| 237 | + |
214 | 238 | OIDC_AUTH = { |
215 | | - 'OIDC_ENDPOINT': f"{OIDC_HOST}/realms/{OIDC_REALM}", |
| 239 | + 'OIDC_ENDPOINT': f"{KEYCLOAK_INTERNAL_SERVICE_URL}/realms/{KEYCLOAK_REALM}", |
216 | 240 | 'OIDC_CLAIMS_OPTIONS': { |
217 | 241 | 'aud': { |
218 | 242 | 'values': [ |
219 | 243 | 'account', |
220 | | - OIDC_BACKEND_CLIENT_ID, |
221 | | - OIDC_FRONTEND_CLIENT_ID |
| 244 | + KEYCLOAK_BACKEND_CLIENT_ID, |
| 245 | + KEYCLOAK_FRONTEND_CLIENT_ID |
222 | 246 | ], |
223 | 247 | 'essential': True, |
224 | 248 | }, |
225 | 249 | 'iss': { |
226 | 250 | 'values': [ |
227 | | - f"{OIDC_HOST}/realms/{OIDC_REALM}" |
| 251 | + f"{KEYCLOAK_INTERNAL_SERVICE_URL}/realms/{KEYCLOAK_REALM}" |
228 | 252 | ], |
229 | 253 | 'essential': True, |
230 | 254 | }, |
231 | 255 | }, |
232 | | - 'USERINFO_ENDPOINT': f"{OIDC_HOST}/realms/{OIDC_REALM}/protocol/openid-connect/userinfo", |
| 256 | + 'USERINFO_ENDPOINT': f"{KEYCLOAK_INTERNAL_SERVICE_URL}/realms/{KEYCLOAK_REALM}/protocol/openid-connect/userinfo", |
233 | 257 | 'OIDC_CREATE_USER': True, |
234 | 258 | 'OIDC_RESOLVE_USER_FUNCTION': 'api.oidc_utils.get_user_by_email', |
235 | | - 'OIDC_CLIENT_ID': OIDC_BACKEND_CLIENT_ID, |
236 | | - 'OIDC_CLIENT_SECRET': OIDC_BACKEND_CLIENT_SECRET, |
| 259 | + 'OIDC_CLIENT_ID': KEYCLOAK_BACKEND_CLIENT_ID, |
| 260 | + 'OIDC_CLIENT_SECRET': KEYCLOAK_BACKEND_CLIENT_SECRET, |
237 | 261 | } |
238 | 262 |
|
239 | 263 |
|
|
0 commit comments