diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml index d82f3b45f87958f16e7a168d6e067cc1ef67783d..4d33cc34e54ec5818e14827803b14006029e5a4e 100644 --- a/.docker/docker-compose.yml +++ b/.docker/docker-compose.yml @@ -305,7 +305,6 @@ services: NUXT_PUBLIC_API_CLIENT: "${BASE_URL:-http://localhost}" NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://gateway-service}" NUXT_PUBLIC_UPLOAD_CLIENT: "${BASE_URL:-http://localhost}/api/upload/files" - NUXT_OIDC_PROVIDERS_KEYCLOAK_BASE_URL: "${BASE_URL:-http://localhost:8080}/realms/dbrepo" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_ID: "${AUTH_SERVICE_CLIENT:-dbrepo-client}" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET: "${AUTH_SERVICE_CLIENT:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG}" NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI: "${BASE_URL:-http://localhost}/auth/keycloak/callback" diff --git a/.docs/api/auth-service.md b/.docs/api/auth-service.md index 93e87beaf280b5ed9b96a2aca508308098676173..7b28901a9b9d49a01d48a313187f86832509a03b 100644 --- a/.docs/api/auth-service.md +++ b/.docs/api/auth-service.md @@ -88,10 +88,6 @@ which is imported into Keycloak on startup. ## Limitations -* No support for sending e-mails through Keycloak by default. -* No support for temporary passwords. -* No support for multi-factor authentication. - !!! question "Do you miss functionality? Do these limitations affect you?" We strongly encourage you to help us implement it as we are welcoming contributors to open-source software and get diff --git a/.docs/api/ui.md b/.docs/api/ui.md index 30b32c0a0ccde771c8bde22f21ca630d6354a9b3..b82058c19bae4c4e629e0f1e06eca29985c94f67 100644 --- a/.docs/api/ui.md +++ b/.docs/api/ui.md @@ -101,6 +101,7 @@ See the [API Overview](..) page for detailed examples. ## Limitations +* Changing the OIDC provider URL requires to build the UI from scratch. * When developing locally, the `axios` module does not parse custom headers (such as `X-Count`, `X-Headers`) and/or blocks CORS requests wrongfully. diff --git a/.gitlab/agents/dev/values.yaml b/.gitlab/agents/dev/values.yaml index 70ada3ca2083637763845747094272fba54dd29f..b4f579070614e538c7cd731e2a10b1b6e89d4d1b 100644 --- a/.gitlab/agents/dev/values.yaml +++ b/.gitlab/agents/dev/values.yaml @@ -132,7 +132,7 @@ metricdb: ui: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc0 + name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc3-datalab-dev public: api: client: https://s155.datalab.tuwien.ac.at diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue index 50aa155d86c857921fe22384565e2e93583e9524..bd2b12e13addab25e36936438b71f2b2c85081d7 100644 --- a/dbrepo-ui/layouts/default.vue +++ b/dbrepo-ui/layouts/default.vue @@ -173,6 +173,7 @@ useServerHead({ import JumboBox from '@/components/JumboBox.vue' import { useCacheStore } from '@/stores/cache.js' import { errorCodeKey, makeError } from '@/utils' +import {useNuxtApp} from "#app"; export default { components: { diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts index 28505257a22a2db405519a39599f0caaeaac1179..911e91131d45cdeda91d60ad0cb2c799c977f929 100644 --- a/dbrepo-ui/nuxt.config.ts +++ b/dbrepo-ui/nuxt.config.ts @@ -110,22 +110,25 @@ export default defineNuxtConfig({ }, oidc: { + defaultProvider: 'keycloak', providers: { keycloak: { - audience: 'account', - baseUrl: 'http://localhost/realms/dbrepo', - clientId: 'dbrepo-client', + clientId: '', clientSecret: '', // inject on runtime + authorizationUrl: '', + userInfoUrl: '', + tokenUrl: '', + logoutUrl: '', scope: ['openid', 'roles'], optionalClaims: ['realm_access'], - redirectUri: 'http://localhost/auth/keycloak/callback', - userNameClaim: 'preferred_username', + redirectUri: '', exposeAccessToken: true, - logoutRedirectUri: 'http://localhost', + logoutRedirectUri: '', }, }, middleware: { - globalMiddlewareEnabled: false + globalMiddlewareEnabled: false, + customLoginPage: false }, }, diff --git a/docker-compose.yml b/docker-compose.yml index 25e0b397335bf148af33ce3c04bdad7fcef2565f..8e81d42e04589417a4461bcb3038998839ebfca6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -335,11 +335,14 @@ services: NUXT_PUBLIC_API_CLIENT: "${BASE_URL:-http://localhost}" NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://gateway-service}" NUXT_PUBLIC_UPLOAD_CLIENT: "${BASE_URL:-http://localhost}/api/upload/files" - NUXT_OIDC_PROVIDERS_KEYCLOAK_BASE_URL: "${BASE_URL:-http://localhost}/realms/dbrepo" + NUXT_OIDC_PROVIDERS_KEYCLOAK_AUTHORIZATION_URL: "${BASE_URL:-http://localhost}/realms/dbrepo/protocol/openid-connect/auth" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_ID: "${AUTH_SERVICE_CLIENT:-dbrepo-client}" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET: "${AUTH_SERVICE_CLIENT:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG}" - NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI: "${BASE_URL:-http://localhost}/auth/keycloak/callback" NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_REDIRECT_URI: "${BASE_URL:-http://localhost}" + NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_URL: "${BASE_URL:-http://localhost}/realms/dbrepo/protocol/openid-connect/logout" + NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI: "${BASE_URL:-http://localhost}/auth/keycloak/callback" + NUXT_OIDC_PROVIDERS_KEYCLOAK_TOKEN_URL: "${BASE_URL:-http://localhost}/realms/dbrepo/protocol/openid-connect/token" + NUXT_OIDC_PROVIDERS_KEYCLOAK_USER_INFO_URL: "${BASE_URL:-http://localhost}/realms/dbrepo/protocol/openid-connect/userinfo" depends_on: dbrepo-search-service: condition: service_healthy diff --git a/helm/dbrepo/templates/ui-secret.yaml b/helm/dbrepo/templates/ui-secret.yaml index 3e1a6c6388da782610819d07c93bbfb9dfa3af87..3afb602785767d106ba56d548f7a364ab46e3d04 100644 --- a/helm/dbrepo/templates/ui-secret.yaml +++ b/helm/dbrepo/templates/ui-secret.yaml @@ -22,9 +22,12 @@ stringData: NUXT_PUBLIC_PID_DEFAULT_PUBLISHER: "{{ .Values.ui.public.pid.default.publisher }}" NUXT_PUBLIC_UPLOAD_CLIENT: "{{ .Values.ui.public.upload.client | default $uploadEndpoint }}" NUXT_PUBLIC_BROKER_CONNECTIONS: "{{ include "dbrepo.broker.connections" . }}" - NUXT_OIDC_PROVIDERS_KEYCLOAK_BASE_URL: "{{ .Values.gateway }}/realms/dbrepo" + NUXT_OIDC_PROVIDERS_KEYCLOAK_AUTHORIZATION_URL: "{{ .Values.gateway }}/realms/dbrepo/protocol/openid-connect/auth" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_ID: "{{ .Values.authservice.client.id }}" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET: "{{ .Values.authservice.client.secret }}" - NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI: "{{ .Values.gateway }}/auth/keycloak/callback" NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_REDIRECT_URI: "{{ .Values.gateway }}" + NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_URL: "{{ .Values.gateway }}/realms/dbrepo/protocol/openid-connect/logout" + NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI: "{{ .Values.gateway }}/auth/keycloak/callback" + NUXT_OIDC_PROVIDERS_KEYCLOAK_TOKEN_URL: "{{ .Values.gateway }}/realms/dbrepo/protocol/openid-connect/token" + NUXT_OIDC_PROVIDERS_KEYCLOAK_USER_INFO_URL: "{{ .Values.gateway }}/realms/dbrepo/protocol/openid-connect/userinfo" {{- end }}