diff --git a/SAS/TMSS/backend/src/tmss/settings.py b/SAS/TMSS/backend/src/tmss/settings.py index 3f4859a631b66d300f00b486bb839f26ff044c50..baefd2e32801d9c7d841abfd341fb9890748cea5 100644 --- a/SAS/TMSS/backend/src/tmss/settings.py +++ b/SAS/TMSS/backend/src/tmss/settings.py @@ -300,12 +300,12 @@ if "OIDC_RP_CLIENT_ID" in os.environ.keys(): OIDC_RP_CLIENT_ID = os.environ.get('OIDC_RP_CLIENT_ID', 'secret') # Secret, do not put real credentials on Git OIDC_RP_CLIENT_SECRET = os.environ.get('OIDC_RP_CLIENT_SECRET', 'secret') # Secret, do not put real credentials on Git OIDC_RP_SIGN_ALGO = os.environ.get('OIDC_RP_SIGN_ALGO', 'RS256') - OIDC_OP_JWKS_ENDPOINT = os.environ.get('OIDC_OP_JWKS_ENDPOINT', 'https://keycloak.astron.nl/auth/realms/SDC/protocol/openid-connect/certs') + OIDC_OP_JWKS_ENDPOINT = os.environ.get('OIDC_OP_JWKS_ENDPOINT', 'https://keycloak-sdc.astron.nl/realms/TMSS/protocol/openid-connect/certs') - OIDC_ENDPOINT_HOST = os.environ.get('OIDC_ENDPOINT_HOST', 'https://keycloak.astron.nl') - OIDC_OP_AUTHORIZATION_ENDPOINT = os.environ.get('OIDC_OP_AUTHORIZATION_ENDPOINT', "https://keycloak.astron.nl/auth/realms/SDC/protocol/openid-connect/auth") - OIDC_OP_TOKEN_ENDPOINT = os.environ.get('OIDC_OP_TOKEN_ENDPOINT', "https://keycloak.astron.nl/auth/realms/SDC/protocol/openid-connect/token") - OIDC_OP_USER_ENDPOINT = os.environ.get('OIDC_OP_USER_ENDPOINT', "https://keycloak.astron.nl/auth/realms/SDC/protocol/openid-connect/userinfo") + OIDC_ENDPOINT_HOST = os.environ.get('OIDC_ENDPOINT_HOST', 'https://keycloak-sdc.astron.nl') + OIDC_OP_AUTHORIZATION_ENDPOINT = os.environ.get('OIDC_OP_AUTHORIZATION_ENDPOINT', "https://keycloak-sdc.astron.nl/realms/TMSS/protocol/openid-connect/auth") + OIDC_OP_TOKEN_ENDPOINT = os.environ.get('OIDC_OP_TOKEN_ENDPOINT', "https://keycloak-sdc.astron.nl/realms/TMSS/protocol/openid-connect/token") + OIDC_OP_USER_ENDPOINT = os.environ.get('OIDC_OP_USER_ENDPOINT', "https://keycloak-sdc.astron.nl/realms/TMSS/protocol/openid-connect/userinfo") AUTHENTICATION_BACKENDS += ('lofar.sas.tmss.tmss.authentication_backends.TMSSOIDCAuthenticationBackend',) # MIDDLEWARE.append('mozilla_django_oidc.middleware.SessionRefresh') # this seems to forward us to Keycloak on a request that was submitted after some minutes. Commenting this out for now, can probably be removed if it does not break sth else. @@ -316,7 +316,7 @@ if len(AUTHENTICATION_BACKENDS) == 1: LOGIN_REDIRECT_URL = "/" LOGIN_REDIRECT_URL_FAILURE = "/" -LOGOUT_REDIRECT_URL = os.environ.get('TMSS_LOGOUT_REDIRECT_URL', "https://keycloak.astron.nl/auth/realms/SDC/account/#/") # so the user can log out of OpenID provider too +LOGOUT_REDIRECT_URL = os.environ.get('TMSS_LOGOUT_REDIRECT_URL', "https://keycloak-sdc.astron.nl/realms/TMSS/account/#/") # so the user can log out of OpenID provider too LOGOUT_REDIRECT_URL_FAILURE = "/" # Password validation diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/keycloak.py b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/keycloak.py index 85eb89bb6cc1ef65e31a253fbb61ff6766552db2..9cd4bc0b5e44862bb9568f5056fd3c784f16c41f 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/keycloak.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/keycloak.py @@ -8,10 +8,10 @@ from lofar.sas.tmss.tmss.exceptions import TMSSException from lofar.sas.tmss.tmss.tmssapp import models logger = logging.Logger(__name__) -KEYCLOAK_TOKEN_URL = os.environ.get('KEYCLOAK_TOKEN_URL', 'https://keycloak.astron.nl/auth/realms/SDC/protocol/openid-connect/token') +KEYCLOAK_TOKEN_URL = os.environ.get('KEYCLOAK_TOKEN_URL', 'https://keycloak-sdc.astron.nl/realms/TMSS/protocol/openid-connect/token') KEYCLOAK_ADMIN_USER = os.environ.get('KEYCLOAK_ADMIN_USER', 'secret') KEYCLOAK_ADMIN_PASSWORD = os.environ.get('KEYCLOAK_ADMIN_PASSWORD', 'secret') -KEYCLOAK_API_BASE_URL = os.environ.get('KEYCLOAK_API_BASE_URL', 'https://keycloak.astron.nl/auth/admin/realms/SDC') +KEYCLOAK_API_BASE_URL = os.environ.get('KEYCLOAK_API_BASE_URL', 'https://keycloak-sdc.astron.nl/admin/realms/TMSS') class KeycloakAdminAPISession(requests.Session): @@ -65,10 +65,10 @@ def get_project_persons(include_projects: tuple = None): """ project_persons_map = {} with KeycloakAdminAPISession() as ksession: - groups = ksession.get(url='%s/groups/' % KEYCLOAK_API_BASE_URL) + groups = ksession.get(url='%s/groups/?search=Project' % KEYCLOAK_API_BASE_URL) for group in groups: if group['name'] == 'Project': - projects = group['subGroups'] + projects = ksession.get(url='%s/groups/%s/children?max=99999' % (KEYCLOAK_API_BASE_URL, group['id'])) for project in projects: if include_projects is None or project['name'] in include_projects: project_detail = ksession.get(url='%s/groups/%s/' % (KEYCLOAK_API_BASE_URL, project['id'])) @@ -121,9 +121,15 @@ def get_user_mapping(include_usernames: tuple = None, include_email: tuple = Non else: users = [] for username in include_usernames or []: - users += (ksession.get(url='%s/users/?username=%s' % (KEYCLOAK_API_BASE_URL, username))) + try: + users += (ksession.get(url='%s/users/?username=%s' % (KEYCLOAK_API_BASE_URL, username))) + except: + logger.warning('Fetching user details from Keycloak failed for username=%s' % username) for email in include_email or []: - users += (ksession.get(url='%s/users/?email=%s' % (KEYCLOAK_API_BASE_URL, email))) + try: + users += (ksession.get(url='%s/users/?email=%s' % (KEYCLOAK_API_BASE_URL, email))) + except: + logger.warning('Fetching user details from Keycloak failed for email=%s' % email) for user in users: if 'attributes' in user and 'email' in user: