Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#390] Add OIDC #403

Merged
merged 20 commits into from
Oct 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
a17362e
:heavy_plus_sign: [#390] Add OIDC
SilviaAmAm Oct 2, 2024
293eb2a
:wrench: [#390] Configure OIDC
SilviaAmAm Oct 2, 2024
a9c22a6
:sparkles: [#390] Add endpoint to pass info to frontend
SilviaAmAm Oct 2, 2024
35bc6d9
:white_check_mark: [#390] Test new endpoint
SilviaAmAm Oct 2, 2024
4233301
:arrow_up: [#390] Upgrade admin-ui
SilviaAmAm Oct 3, 2024
dbee12b
:sparkles: [#390] Add button to the UI
SilviaAmAm Oct 3, 2024
3a6d8ed
:sparkles: [#390] Make it possible to redirect to frontend
SilviaAmAm Oct 4, 2024
ff4a1c3
:memo: [#390] Add story for OIDC login
SilviaAmAm Oct 4, 2024
ecacd3f
:sparkles: [#390] Add superuser group
SilviaAmAm Oct 4, 2024
1b186da
:construction: [#390] Add setup to run keycloak for tests
SilviaAmAm Oct 4, 2024
c6a1c63
:white_check_mark: [#390] Add OIDC login tests
SilviaAmAm Oct 7, 2024
b8c60fd
:construction: [#390] Add E2E test for OIDC login
SilviaAmAm Oct 7, 2024
e6bfad0
:construction_worker: [#390] Add Keycloak to CI
SilviaAmAm Oct 7, 2024
31c0f50
:memo: [#390] Document E2E tests
SilviaAmAm Oct 7, 2024
db5f21b
:adhesive_bandage: [#390] Fix 'Address already in use' error
SilviaAmAm Oct 7, 2024
9eaa62f
:pushpin: [#390] Pin Keycloak version
SilviaAmAm Oct 8, 2024
6124378
:arrow_up: [#390] Upgrade admin-ui
SilviaAmAm Oct 9, 2024
149a936
:white_check_mark: [#390] Add test for OIDC login in frontend
SilviaAmAm Oct 9, 2024
830ab22
:ok_hand: [#390] Make context provider specific to OIDC
SilviaAmAm Oct 10, 2024
cee7ae8
:memo: [#390] Make it very clear that docker compose is for dev
SilviaAmAm Oct 10, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ env:
IMAGE_NAME: maykinmedia/open-archiefbeheer
DJANGO_SETTINGS_MODULE: openarchiefbeheer.conf.ci
DOCKER_BUILDKIT: '1'
KEYCLOAK_BASE_URL: http://localhost:28080

jobs:
frontend-build:
Expand Down Expand Up @@ -191,6 +192,24 @@ jobs:
npm-ci-flags: '--legacy-peer-deps'
working-directory: backend
nvmrc-custom-dir: backend

- name: Start CI docker services
run: |
docker compose up -d
working-directory: backend/docker-services/keycloak

- name: Wait for Keycloak to be up
run: |
endpoint="${KEYCLOAK_BASE_URL}/realms/openarchiefbeheer-dev/"
realm=""

until [ $realm ]; do
echo "Checking if Keycloak at ${KEYCLOAK_BASE_URL} is up..."
realm=$(curl "$endpoint" -s | jq -r ".realm")
sleep 2
done

echo "Running Keycloak with realm $realm"

# See https://playwright.dev/python/docs/ci#caching-browsers
- name: Cache Playwright browser
Expand Down
5 changes: 5 additions & 0 deletions backend/docker-services/keycloak/Readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
To export the realm settings, run this command in the keycloak container:

```bash
/opt/keycloak/bin/kc.sh export --file /tmp/realm_export.json --realm openarchiefbeheer-dev
```
42 changes: 42 additions & 0 deletions backend/docker-services/keycloak/docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#
# DISCLAIMER: THIS IS FOR DEVELOPMENT PURPOSES ONLY AND NOT SUITABLE FOR PRODUCTION.
#
# You can use this docker-compose to spin up a local stack for demo/try-out
# purposes, or to get some insight in the various components involved (e.g. to build
# your Helm charts from). Note that various environment variables are UNSAFE and merely
# specified so that you can get up and running with the least amount of friction.
services:
keycloak-db:
image: postgres:14
restart: unless-stopped
environment:
POSTGRES_DB: keycloak
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: keycloak
networks:
- keycloak-dev

keycloak:
depends_on:
- keycloak-db
container_name: keycloak_dev
command: start-dev --import-realm
environment:
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
SilviaAmAm marked this conversation as resolved.
Show resolved Hide resolved
KC_DB: postgres
KC_DB_URL: jdbc:postgresql://keycloak-db/keycloak
KC_DB_USERNAME: keycloak
KC_DB_PASSWORD: keycloak
KC_HOSTNAME: localhost
image: quay.io/keycloak/keycloak:25.0.6
ports:
- "28080:8080"
restart: unless-stopped
volumes:
- ./fixtures:/opt/keycloak/data/import
networks:
- keycloak-dev

networks:
keycloak-dev:
Loading
Loading