🧑‍💻(dev) run Docs beside Drive on a shared identity provider

The POC needs both stacks up at once on one machine, so the default
ports (3000, 8071, 8083, 4444...) are remapped to a parallel scheme
(3001, 8072, 8084, 4445...) and both compose networks share the
lasuite-network bridge. Authentication is delegated to Drive's
Keycloak: users must have the same OIDC sub in both apps for the
impersonation headers to resolve, so a single realm serves the two of
them and the local Keycloak is no longer proxied. The Drive
server-to-server dev token is a placeholder, mirrored in the Drive
branch of the POC.
This commit is contained in:
Nathan Vasse
2026-07-30 15:49:38 +02:00
parent 0a6cfa3a33
commit b59778f657
5 changed files with 42 additions and 51 deletions
+23 -18
View File
@@ -18,42 +18,43 @@ PYTHONPATH=/app
# Mail
DJANGO_EMAIL_BRAND_NAME="La Suite Numérique"
DJANGO_EMAIL_HOST="mailcatcher"
DJANGO_EMAIL_LOGO_IMG="http://localhost:3000/assets/logo-suite-numerique.png"
DJANGO_EMAIL_LOGO_IMG="http://localhost:3001/assets/logo-suite-numerique.png"
DJANGO_EMAIL_PORT=1025
DJANGO_EMAIL_URL_APP="http://localhost:3000"
DJANGO_EMAIL_URL_APP="http://localhost:3001"
# Backend url
IMPRESS_BASE_URL="http://localhost:8072"
DJANGO_CSRF_TRUSTED_ORIGINS=http://localhost:8072,http://localhost:3001
# Media
STORAGES_STATICFILES_BACKEND=django.contrib.staticfiles.storage.StaticFilesStorage
AWS_S3_ENDPOINT_URL=http://minio:9000
AWS_S3_ACCESS_KEY_ID=impress
AWS_S3_SECRET_ACCESS_KEY=password
MEDIA_BASE_URL=http://localhost:8083
MEDIA_BASE_URL=http://localhost:8084
# OIDC
OIDC_OP_JWKS_ENDPOINT=http://nginx:8083/realms/impress/protocol/openid-connect/certs
OIDC_OP_AUTHORIZATION_ENDPOINT=http://localhost:8083/realms/impress/protocol/openid-connect/auth
OIDC_OP_TOKEN_ENDPOINT=http://nginx:8083/realms/impress/protocol/openid-connect/token
OIDC_OP_USER_ENDPOINT=http://nginx:8083/realms/impress/protocol/openid-connect/userinfo
OIDC_OP_INTROSPECTION_ENDPOINT=http://nginx:8083/realms/impress/protocol/openid-connect/token/introspect
OIDC_OP_JWKS_ENDPOINT=http://drive-keycloak-1:8080/realms/drive/protocol/openid-connect/certs
OIDC_OP_AUTHORIZATION_ENDPOINT=http://localhost:8083/realms/drive/protocol/openid-connect/auth
OIDC_OP_TOKEN_ENDPOINT=http://drive-keycloak-1:8080/realms/drive/protocol/openid-connect/token
OIDC_OP_USER_ENDPOINT=http://drive-keycloak-1:8080/realms/drive/protocol/openid-connect/userinfo
OIDC_OP_INTROSPECTION_ENDPOINT=http://drive-keycloak-1:8080/realms/drive/protocol/openid-connect/token/introspect
OIDC_RP_CLIENT_ID=impress
OIDC_RP_CLIENT_SECRET=ThisIsAnExampleKeyForDevPurposeOnly
OIDC_RP_SIGN_ALGO=RS256
OIDC_RP_SCOPES="openid email"
LOGIN_REDIRECT_URL=http://localhost:3000
LOGIN_REDIRECT_URL_FAILURE=http://localhost:3000
LOGOUT_REDIRECT_URL=http://localhost:3000
LOGIN_REDIRECT_URL=http://localhost:3001
LOGIN_REDIRECT_URL_FAILURE=http://localhost:3001
LOGOUT_REDIRECT_URL=http://localhost:3001
OIDC_REDIRECT_ALLOWED_HOSTS="localhost:8083,localhost:3000"
OIDC_REDIRECT_ALLOWED_HOSTS="localhost:8083,localhost:3001"
OIDC_AUTH_REQUEST_EXTRA_PARAMS={"acr_values": "eidas1"}
# Resource Server Backend
OIDC_OP_URL=http://localhost:8083/realms/docs
OIDC_OP_INTROSPECTION_ENDPOINT = http://nginx:8083/realms/docs/protocol/openid-connect/token/introspect
OIDC_OP_URL=http://localhost:8083/realms/drive
OIDC_OP_INTROSPECTION_ENDPOINT = http://drive-keycloak-1:8080/realms/drive/protocol/openid-connect/token/introspect
OIDC_RESOURCE_SERVER_ENABLED=False
OIDC_RS_CLIENT_ID=docs
OIDC_RS_CLIENT_SECRET=ThisIsAnExampleKeyForDevPurposeOnly
@@ -69,18 +70,18 @@ OIDC_RS_ALLOWED_AUDIENCES=""
# OIDC_STORE_REFRESH_TOKEN_KEY="your-32-byte-encryption-key=="
# User reconciliation
USER_RECONCILIATION_FORM_URL=http://localhost:3000
USER_RECONCILIATION_FORM_URL=http://localhost:3001
# Collaboration
COLLABORATION_API_URL=http://y-provider-development:4444/collaboration/api/
COLLABORATION_BACKEND_BASE_URL=http://app-dev:8000
COLLABORATION_SERVER_ORIGIN=http://localhost:3000
COLLABORATION_SERVER_ORIGIN=http://localhost:3001
COLLABORATION_SERVER_SECRET=my-secret
COLLABORATION_WS_NOT_CONNECTED_READ_ONLY=true
COLLABORATION_WS_URL=ws://localhost:4444/collaboration/ws/
COLLABORATION_WS_URL=ws://localhost:4445/collaboration/ws/
COLLABORATION_WS_INACTIVITY_TIMEOUT=15 # Seconds
DJANGO_SERVER_TO_SERVER_API_TOKENS=server-api-token
DJANGO_SERVER_TO_SERVER_API_TOKENS=server-api-token,docs-drive-poc-secret
Y_PROVIDER_API_BASE_URL=http://y-provider-development-converter:4444/api/
Y_PROVIDER_API_KEY=yprovider-api-key
@@ -97,3 +98,7 @@ SEARCH_URL=http://find:8000/api/v1.0/documents/search/
SEARCH_INDEXER_QUERY_LIMIT=50
CONVERSION_UPLOAD_ENABLED=true
# Docs <-> Drive POC integration
DRIVE_API_BASE_URL=http://drive-app-dev-1:8000/api/v1.0
DRIVE_SERVER_TO_SERVER_TOKEN=docs-drive-poc-secret
+1 -1
View File
@@ -1,6 +1,6 @@
# Keycloak
KC_HOSTNAME=http://localhost:8083
KC_HOSTNAME=http://localhost:8084
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
KC_DB: postgres