Go-live, ecosplay realm-as-code, and full theme coverage
Go-live:
- Switch keycloak from start-dev to start --import-realm (production
mode with auto-build at boot, no Dockerfile needed yet).
- Set KC_HOSTNAME=https://auth.e-cosplay.fr and KC_PROXY_HEADERS=
xforwarded so Keycloak emits correct issuer URLs and trusts
Caddy's X-Forwarded-* headers.
- Replace deprecated KEYCLOAK_ADMIN env vars with KC_BOOTSTRAP_ADMIN_*.
- Bind the public port to 127.0.0.1 only (Caddy is colocated).
- Add a Keycloak healthcheck against /health/ready on the management
port (9000) using bash /dev/tcp; init container now waits on
service_healthy instead of service_started.
Architecture:
- New realms/ecosplay-realm.json mounted into /opt/keycloak/data/import
and imported on first boot. Defines the dedicated 'ecosplay' realm
(separate from master) with French i18n, brute-force protection,
strong password policy, SES SMTP, and an OIDC client 'ecosplay-web'
pointing at e-cosplay.fr (confidential + PKCE S256).
Theme coverage:
- themes/ecosplay/account: PatternFly v5 overlay (parent=keycloak.v2)
bringing the neo-brutalist colors, thick borders, italic uppercase
typography, and offset hard shadows to the user account console.
- themes/ecosplay/email: branded HTML wrapper template (table layout
with inline styles for email-client safety) plus a matching plain
text wrapper. All Keycloak emails now ship with the E-Cosplay
identity without needing per-template overrides.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:22:40 +02:00
|
|
|
{
|
|
|
|
|
"realm": "ecosplay",
|
|
|
|
|
"displayName": "E-Cosplay",
|
|
|
|
|
"displayNameHtml": "<span style=\"font-weight:900;text-transform:uppercase;font-style:italic;\">E-Cosplay</span>",
|
|
|
|
|
"enabled": true,
|
|
|
|
|
|
|
|
|
|
"loginTheme": "ecosplay",
|
|
|
|
|
"accountTheme": "ecosplay",
|
|
|
|
|
"emailTheme": "ecosplay",
|
|
|
|
|
"adminTheme": "keycloak.v2",
|
|
|
|
|
|
|
|
|
|
"internationalizationEnabled": true,
|
|
|
|
|
"supportedLocales": ["fr"],
|
|
|
|
|
"defaultLocale": "fr",
|
|
|
|
|
|
|
|
|
|
"registrationAllowed": true,
|
|
|
|
|
"registrationEmailAsUsername": true,
|
|
|
|
|
"rememberMe": true,
|
|
|
|
|
"verifyEmail": true,
|
|
|
|
|
"loginWithEmailAllowed": true,
|
|
|
|
|
"duplicateEmailsAllowed": false,
|
|
|
|
|
"resetPasswordAllowed": true,
|
|
|
|
|
"editUsernameAllowed": false,
|
|
|
|
|
|
|
|
|
|
"bruteForceProtected": true,
|
|
|
|
|
"permanentLockout": false,
|
|
|
|
|
"maxFailureWaitSeconds": 900,
|
|
|
|
|
"minimumQuickLoginWaitSeconds": 60,
|
|
|
|
|
"waitIncrementSeconds": 60,
|
|
|
|
|
"quickLoginCheckMilliSeconds": 1000,
|
|
|
|
|
"maxDeltaTimeSeconds": 43200,
|
|
|
|
|
"failureFactor": 5,
|
|
|
|
|
|
|
|
|
|
"passwordPolicy": "length(10) and specialChars(1) and digits(1) and upperCase(1) and lowerCase(1) and notUsername(undefined) and notEmail(undefined)",
|
|
|
|
|
|
|
|
|
|
"accessTokenLifespan": 300,
|
|
|
|
|
"accessTokenLifespanForImplicitFlow": 900,
|
|
|
|
|
"ssoSessionIdleTimeout": 1800,
|
|
|
|
|
"ssoSessionMaxLifespan": 36000,
|
|
|
|
|
"offlineSessionIdleTimeout": 2592000,
|
|
|
|
|
"actionTokenGeneratedByUserLifespan": 900,
|
|
|
|
|
|
2026-04-10 18:23:30 +02:00
|
|
|
"webAuthnPolicyRpEntityName": "E-Cosplay",
|
|
|
|
|
"webAuthnPolicySignatureAlgorithms": ["ES256", "RS256", "EdDSA"],
|
|
|
|
|
"webAuthnPolicyUserVerificationRequirement": "preferred",
|
|
|
|
|
"webAuthnPolicyAttestationConveyancePreference": "none",
|
|
|
|
|
"webAuthnPolicyRequireResidentKey": "not specified",
|
|
|
|
|
"webAuthnPolicyPasswordlessRpEntityName": "E-Cosplay",
|
|
|
|
|
"webAuthnPolicyPasswordlessSignatureAlgorithms": ["ES256", "RS256", "EdDSA"],
|
|
|
|
|
"webAuthnPolicyPasswordlessUserVerificationRequirement": "preferred",
|
|
|
|
|
"webAuthnPolicyPasswordlessAttestationConveyancePreference": "none",
|
|
|
|
|
"webAuthnPolicyPasswordlessRequireResidentKey": "not specified",
|
|
|
|
|
|
|
|
|
|
"requiredActions": [
|
|
|
|
|
{
|
|
|
|
|
"alias": "CONFIGURE_TOTP",
|
|
|
|
|
"name": "Configure OTP",
|
|
|
|
|
"providerId": "CONFIGURE_TOTP",
|
|
|
|
|
"enabled": true,
|
|
|
|
|
"defaultAction": false,
|
|
|
|
|
"priority": 10,
|
|
|
|
|
"config": {}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"alias": "webauthn-register",
|
|
|
|
|
"name": "Webauthn Register",
|
|
|
|
|
"providerId": "webauthn-register",
|
|
|
|
|
"enabled": true,
|
|
|
|
|
"defaultAction": false,
|
|
|
|
|
"priority": 70,
|
|
|
|
|
"config": {}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"alias": "webauthn-register-passwordless",
|
|
|
|
|
"name": "Webauthn Register Passwordless",
|
|
|
|
|
"providerId": "webauthn-register-passwordless",
|
|
|
|
|
"enabled": true,
|
|
|
|
|
"defaultAction": false,
|
|
|
|
|
"priority": 80,
|
|
|
|
|
"config": {}
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
|
Go-live, ecosplay realm-as-code, and full theme coverage
Go-live:
- Switch keycloak from start-dev to start --import-realm (production
mode with auto-build at boot, no Dockerfile needed yet).
- Set KC_HOSTNAME=https://auth.e-cosplay.fr and KC_PROXY_HEADERS=
xforwarded so Keycloak emits correct issuer URLs and trusts
Caddy's X-Forwarded-* headers.
- Replace deprecated KEYCLOAK_ADMIN env vars with KC_BOOTSTRAP_ADMIN_*.
- Bind the public port to 127.0.0.1 only (Caddy is colocated).
- Add a Keycloak healthcheck against /health/ready on the management
port (9000) using bash /dev/tcp; init container now waits on
service_healthy instead of service_started.
Architecture:
- New realms/ecosplay-realm.json mounted into /opt/keycloak/data/import
and imported on first boot. Defines the dedicated 'ecosplay' realm
(separate from master) with French i18n, brute-force protection,
strong password policy, SES SMTP, and an OIDC client 'ecosplay-web'
pointing at e-cosplay.fr (confidential + PKCE S256).
Theme coverage:
- themes/ecosplay/account: PatternFly v5 overlay (parent=keycloak.v2)
bringing the neo-brutalist colors, thick borders, italic uppercase
typography, and offset hard shadows to the user account console.
- themes/ecosplay/email: branded HTML wrapper template (table layout
with inline styles for email-client safety) plus a matching plain
text wrapper. All Keycloak emails now ship with the E-Cosplay
identity without needing per-template overrides.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:22:40 +02:00
|
|
|
"smtpServer": {
|
|
|
|
|
"host": "email-smtp.eu-west-3.amazonaws.com",
|
|
|
|
|
"port": "587",
|
|
|
|
|
"from": "auth@e-cosplay.fr",
|
|
|
|
|
"fromDisplayName": "E-Cosplay",
|
|
|
|
|
"replyTo": "noreply@e-cosplay.fr",
|
|
|
|
|
"envelopeFrom": "auth@e-cosplay.fr",
|
|
|
|
|
"auth": "true",
|
|
|
|
|
"starttls": "true",
|
|
|
|
|
"ssl": "false",
|
|
|
|
|
"user": "AKIAWTT2T22CWBRBBDYN",
|
|
|
|
|
"password": "BBdgb6KxRQ8mNcpWFJsZCJxbSGNdgLhKFiITMErfBlQP"
|
|
|
|
|
},
|
|
|
|
|
|
Add fixed group set on ecosplay realm
- Declare the 10 application groups (gp_asso, gp_contest, gp_mail,
gp_mailling, gp_member, gp_ndd, gp_sign, gp_ticket, super_admin_asso,
superadmin) in the realm import JSON for fresh installs.
- Extend keycloak-init to idempotently create them via kcadm on every
boot, so existing installs (where the realm is already imported and
--import-realm is a no-op) also get them in sync.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:36:40 +02:00
|
|
|
"groups": [
|
|
|
|
|
{ "name": "gp_asso" },
|
|
|
|
|
{ "name": "gp_contest" },
|
|
|
|
|
{ "name": "gp_mail" },
|
|
|
|
|
{ "name": "gp_mailling" },
|
|
|
|
|
{ "name": "gp_member" },
|
|
|
|
|
{ "name": "gp_ndd" },
|
|
|
|
|
{ "name": "gp_sign" },
|
|
|
|
|
{ "name": "gp_ticket" },
|
|
|
|
|
{ "name": "super_admin_asso" },
|
|
|
|
|
{ "name": "superadmin" }
|
|
|
|
|
],
|
|
|
|
|
|
2026-04-10 11:57:50 +02:00
|
|
|
"users": [
|
|
|
|
|
{
|
2026-04-10 16:15:46 +02:00
|
|
|
"username": "jovann@e-cosplay.fr",
|
|
|
|
|
"email": "jovann@e-cosplay.fr",
|
2026-04-10 11:59:33 +02:00
|
|
|
"firstName": "Jovann",
|
2026-04-10 11:59:06 +02:00
|
|
|
"lastName": "Serreau",
|
2026-04-10 11:57:50 +02:00
|
|
|
"enabled": true,
|
|
|
|
|
"emailVerified": true,
|
|
|
|
|
"credentials": [
|
|
|
|
|
{
|
|
|
|
|
"type": "password",
|
|
|
|
|
"value": "Shoko1997@",
|
|
|
|
|
"temporary": false
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"requiredActions": ["CONFIGURE_TOTP"],
|
|
|
|
|
"groups": ["/super_admin_asso", "/superadmin"],
|
|
|
|
|
"clientRoles": {
|
|
|
|
|
"realm-management": ["realm-admin"]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
|
Go-live, ecosplay realm-as-code, and full theme coverage
Go-live:
- Switch keycloak from start-dev to start --import-realm (production
mode with auto-build at boot, no Dockerfile needed yet).
- Set KC_HOSTNAME=https://auth.e-cosplay.fr and KC_PROXY_HEADERS=
xforwarded so Keycloak emits correct issuer URLs and trusts
Caddy's X-Forwarded-* headers.
- Replace deprecated KEYCLOAK_ADMIN env vars with KC_BOOTSTRAP_ADMIN_*.
- Bind the public port to 127.0.0.1 only (Caddy is colocated).
- Add a Keycloak healthcheck against /health/ready on the management
port (9000) using bash /dev/tcp; init container now waits on
service_healthy instead of service_started.
Architecture:
- New realms/ecosplay-realm.json mounted into /opt/keycloak/data/import
and imported on first boot. Defines the dedicated 'ecosplay' realm
(separate from master) with French i18n, brute-force protection,
strong password policy, SES SMTP, and an OIDC client 'ecosplay-web'
pointing at e-cosplay.fr (confidential + PKCE S256).
Theme coverage:
- themes/ecosplay/account: PatternFly v5 overlay (parent=keycloak.v2)
bringing the neo-brutalist colors, thick borders, italic uppercase
typography, and offset hard shadows to the user account console.
- themes/ecosplay/email: branded HTML wrapper template (table layout
with inline styles for email-client safety) plus a matching plain
text wrapper. All Keycloak emails now ship with the E-Cosplay
identity without needing per-template overrides.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:22:40 +02:00
|
|
|
"clients": [
|
|
|
|
|
{
|
2026-04-10 11:59:06 +02:00
|
|
|
"clientId": "ecosplay_web",
|
Go-live, ecosplay realm-as-code, and full theme coverage
Go-live:
- Switch keycloak from start-dev to start --import-realm (production
mode with auto-build at boot, no Dockerfile needed yet).
- Set KC_HOSTNAME=https://auth.e-cosplay.fr and KC_PROXY_HEADERS=
xforwarded so Keycloak emits correct issuer URLs and trusts
Caddy's X-Forwarded-* headers.
- Replace deprecated KEYCLOAK_ADMIN env vars with KC_BOOTSTRAP_ADMIN_*.
- Bind the public port to 127.0.0.1 only (Caddy is colocated).
- Add a Keycloak healthcheck against /health/ready on the management
port (9000) using bash /dev/tcp; init container now waits on
service_healthy instead of service_started.
Architecture:
- New realms/ecosplay-realm.json mounted into /opt/keycloak/data/import
and imported on first boot. Defines the dedicated 'ecosplay' realm
(separate from master) with French i18n, brute-force protection,
strong password policy, SES SMTP, and an OIDC client 'ecosplay-web'
pointing at e-cosplay.fr (confidential + PKCE S256).
Theme coverage:
- themes/ecosplay/account: PatternFly v5 overlay (parent=keycloak.v2)
bringing the neo-brutalist colors, thick borders, italic uppercase
typography, and offset hard shadows to the user account console.
- themes/ecosplay/email: branded HTML wrapper template (table layout
with inline styles for email-client safety) plus a matching plain
text wrapper. All Keycloak emails now ship with the E-Cosplay
identity without needing per-template overrides.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:22:40 +02:00
|
|
|
"name": "E-Cosplay Web",
|
2026-04-10 11:59:06 +02:00
|
|
|
"description": "Application web principale e-cosplay.fr (login site interne)",
|
Go-live, ecosplay realm-as-code, and full theme coverage
Go-live:
- Switch keycloak from start-dev to start --import-realm (production
mode with auto-build at boot, no Dockerfile needed yet).
- Set KC_HOSTNAME=https://auth.e-cosplay.fr and KC_PROXY_HEADERS=
xforwarded so Keycloak emits correct issuer URLs and trusts
Caddy's X-Forwarded-* headers.
- Replace deprecated KEYCLOAK_ADMIN env vars with KC_BOOTSTRAP_ADMIN_*.
- Bind the public port to 127.0.0.1 only (Caddy is colocated).
- Add a Keycloak healthcheck against /health/ready on the management
port (9000) using bash /dev/tcp; init container now waits on
service_healthy instead of service_started.
Architecture:
- New realms/ecosplay-realm.json mounted into /opt/keycloak/data/import
and imported on first boot. Defines the dedicated 'ecosplay' realm
(separate from master) with French i18n, brute-force protection,
strong password policy, SES SMTP, and an OIDC client 'ecosplay-web'
pointing at e-cosplay.fr (confidential + PKCE S256).
Theme coverage:
- themes/ecosplay/account: PatternFly v5 overlay (parent=keycloak.v2)
bringing the neo-brutalist colors, thick borders, italic uppercase
typography, and offset hard shadows to the user account console.
- themes/ecosplay/email: branded HTML wrapper template (table layout
with inline styles for email-client safety) plus a matching plain
text wrapper. All Keycloak emails now ship with the E-Cosplay
identity without needing per-template overrides.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:22:40 +02:00
|
|
|
"enabled": true,
|
|
|
|
|
"publicClient": false,
|
|
|
|
|
"secret": "change-me-in-admin-console",
|
|
|
|
|
"redirectUris": [
|
2026-04-10 11:59:06 +02:00
|
|
|
"https://www.e-cosplay.fr/oauth/keycloak",
|
|
|
|
|
"https://cos.local/oauth/keycloak"
|
Go-live, ecosplay realm-as-code, and full theme coverage
Go-live:
- Switch keycloak from start-dev to start --import-realm (production
mode with auto-build at boot, no Dockerfile needed yet).
- Set KC_HOSTNAME=https://auth.e-cosplay.fr and KC_PROXY_HEADERS=
xforwarded so Keycloak emits correct issuer URLs and trusts
Caddy's X-Forwarded-* headers.
- Replace deprecated KEYCLOAK_ADMIN env vars with KC_BOOTSTRAP_ADMIN_*.
- Bind the public port to 127.0.0.1 only (Caddy is colocated).
- Add a Keycloak healthcheck against /health/ready on the management
port (9000) using bash /dev/tcp; init container now waits on
service_healthy instead of service_started.
Architecture:
- New realms/ecosplay-realm.json mounted into /opt/keycloak/data/import
and imported on first boot. Defines the dedicated 'ecosplay' realm
(separate from master) with French i18n, brute-force protection,
strong password policy, SES SMTP, and an OIDC client 'ecosplay-web'
pointing at e-cosplay.fr (confidential + PKCE S256).
Theme coverage:
- themes/ecosplay/account: PatternFly v5 overlay (parent=keycloak.v2)
bringing the neo-brutalist colors, thick borders, italic uppercase
typography, and offset hard shadows to the user account console.
- themes/ecosplay/email: branded HTML wrapper template (table layout
with inline styles for email-client safety) plus a matching plain
text wrapper. All Keycloak emails now ship with the E-Cosplay
identity without needing per-template overrides.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:22:40 +02:00
|
|
|
],
|
|
|
|
|
"webOrigins": [
|
|
|
|
|
"https://www.e-cosplay.fr",
|
2026-04-10 11:59:06 +02:00
|
|
|
"https://cos.local"
|
Go-live, ecosplay realm-as-code, and full theme coverage
Go-live:
- Switch keycloak from start-dev to start --import-realm (production
mode with auto-build at boot, no Dockerfile needed yet).
- Set KC_HOSTNAME=https://auth.e-cosplay.fr and KC_PROXY_HEADERS=
xforwarded so Keycloak emits correct issuer URLs and trusts
Caddy's X-Forwarded-* headers.
- Replace deprecated KEYCLOAK_ADMIN env vars with KC_BOOTSTRAP_ADMIN_*.
- Bind the public port to 127.0.0.1 only (Caddy is colocated).
- Add a Keycloak healthcheck against /health/ready on the management
port (9000) using bash /dev/tcp; init container now waits on
service_healthy instead of service_started.
Architecture:
- New realms/ecosplay-realm.json mounted into /opt/keycloak/data/import
and imported on first boot. Defines the dedicated 'ecosplay' realm
(separate from master) with French i18n, brute-force protection,
strong password policy, SES SMTP, and an OIDC client 'ecosplay-web'
pointing at e-cosplay.fr (confidential + PKCE S256).
Theme coverage:
- themes/ecosplay/account: PatternFly v5 overlay (parent=keycloak.v2)
bringing the neo-brutalist colors, thick borders, italic uppercase
typography, and offset hard shadows to the user account console.
- themes/ecosplay/email: branded HTML wrapper template (table layout
with inline styles for email-client safety) plus a matching plain
text wrapper. All Keycloak emails now ship with the E-Cosplay
identity without needing per-template overrides.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:22:40 +02:00
|
|
|
],
|
|
|
|
|
"protocol": "openid-connect",
|
|
|
|
|
"standardFlowEnabled": true,
|
|
|
|
|
"implicitFlowEnabled": false,
|
|
|
|
|
"directAccessGrantsEnabled": false,
|
|
|
|
|
"serviceAccountsEnabled": false,
|
|
|
|
|
"frontchannelLogout": true,
|
|
|
|
|
"attributes": {
|
2026-04-10 11:59:06 +02:00
|
|
|
"post.logout.redirect.uris": "https://www.e-cosplay.fr/*##https://cos.local/*",
|
Go-live, ecosplay realm-as-code, and full theme coverage
Go-live:
- Switch keycloak from start-dev to start --import-realm (production
mode with auto-build at boot, no Dockerfile needed yet).
- Set KC_HOSTNAME=https://auth.e-cosplay.fr and KC_PROXY_HEADERS=
xforwarded so Keycloak emits correct issuer URLs and trusts
Caddy's X-Forwarded-* headers.
- Replace deprecated KEYCLOAK_ADMIN env vars with KC_BOOTSTRAP_ADMIN_*.
- Bind the public port to 127.0.0.1 only (Caddy is colocated).
- Add a Keycloak healthcheck against /health/ready on the management
port (9000) using bash /dev/tcp; init container now waits on
service_healthy instead of service_started.
Architecture:
- New realms/ecosplay-realm.json mounted into /opt/keycloak/data/import
and imported on first boot. Defines the dedicated 'ecosplay' realm
(separate from master) with French i18n, brute-force protection,
strong password policy, SES SMTP, and an OIDC client 'ecosplay-web'
pointing at e-cosplay.fr (confidential + PKCE S256).
Theme coverage:
- themes/ecosplay/account: PatternFly v5 overlay (parent=keycloak.v2)
bringing the neo-brutalist colors, thick borders, italic uppercase
typography, and offset hard shadows to the user account console.
- themes/ecosplay/email: branded HTML wrapper template (table layout
with inline styles for email-client safety) plus a matching plain
text wrapper. All Keycloak emails now ship with the E-Cosplay
identity without needing per-template overrides.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:22:40 +02:00
|
|
|
"pkce.code.challenge.method": "S256"
|
2026-04-10 16:24:28 +02:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"clientId": "ecosplay_code",
|
|
|
|
|
"name": "E-Cosplay Code",
|
2026-04-10 16:53:17 +02:00
|
|
|
"description": "Forge de code (Gitea) - login SSO via ecosplay_code provider (Gitea ne supporte pas PKCE)",
|
2026-04-10 16:24:28 +02:00
|
|
|
"enabled": true,
|
|
|
|
|
"publicClient": false,
|
|
|
|
|
"secret": "change-me-in-admin-console",
|
|
|
|
|
"redirectUris": [
|
2026-04-10 16:51:02 +02:00
|
|
|
"https://code.e-cosplay.fr/user/oauth2/ecosplay_code/callback",
|
|
|
|
|
"https://cos.local/user/oauth2/ecosplay_code/callback"
|
2026-04-10 16:24:28 +02:00
|
|
|
],
|
|
|
|
|
"webOrigins": [
|
|
|
|
|
"https://code.e-cosplay.fr",
|
|
|
|
|
"https://cos.local"
|
|
|
|
|
],
|
|
|
|
|
"protocol": "openid-connect",
|
|
|
|
|
"standardFlowEnabled": true,
|
|
|
|
|
"implicitFlowEnabled": false,
|
|
|
|
|
"directAccessGrantsEnabled": false,
|
|
|
|
|
"serviceAccountsEnabled": false,
|
|
|
|
|
"frontchannelLogout": true,
|
|
|
|
|
"attributes": {
|
2026-04-10 16:53:17 +02:00
|
|
|
"post.logout.redirect.uris": "https://code.e-cosplay.fr/*##https://cos.local/*"
|
Go-live, ecosplay realm-as-code, and full theme coverage
Go-live:
- Switch keycloak from start-dev to start --import-realm (production
mode with auto-build at boot, no Dockerfile needed yet).
- Set KC_HOSTNAME=https://auth.e-cosplay.fr and KC_PROXY_HEADERS=
xforwarded so Keycloak emits correct issuer URLs and trusts
Caddy's X-Forwarded-* headers.
- Replace deprecated KEYCLOAK_ADMIN env vars with KC_BOOTSTRAP_ADMIN_*.
- Bind the public port to 127.0.0.1 only (Caddy is colocated).
- Add a Keycloak healthcheck against /health/ready on the management
port (9000) using bash /dev/tcp; init container now waits on
service_healthy instead of service_started.
Architecture:
- New realms/ecosplay-realm.json mounted into /opt/keycloak/data/import
and imported on first boot. Defines the dedicated 'ecosplay' realm
(separate from master) with French i18n, brute-force protection,
strong password policy, SES SMTP, and an OIDC client 'ecosplay-web'
pointing at e-cosplay.fr (confidential + PKCE S256).
Theme coverage:
- themes/ecosplay/account: PatternFly v5 overlay (parent=keycloak.v2)
bringing the neo-brutalist colors, thick borders, italic uppercase
typography, and offset hard shadows to the user account console.
- themes/ecosplay/email: branded HTML wrapper template (table layout
with inline styles for email-client safety) plus a matching plain
text wrapper. All Keycloak emails now ship with the E-Cosplay
identity without needing per-template overrides.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:22:40 +02:00
|
|
|
}
|
2026-04-10 12:02:22 +02:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"clientId": "eticket",
|
|
|
|
|
"name": "E-Ticket",
|
|
|
|
|
"description": "Application billetterie ticket.e-cosplay.fr",
|
|
|
|
|
"enabled": true,
|
|
|
|
|
"publicClient": false,
|
|
|
|
|
"secret": "change-me-in-admin-console",
|
|
|
|
|
"redirectUris": [
|
|
|
|
|
"https://ticket.e-cosplay.fr/api/auth/login/sso/validate",
|
|
|
|
|
"https://cos.local/api/auth/login/sso/validate",
|
|
|
|
|
"https://ticket.e-cosplay.fr/connection/sso/check",
|
|
|
|
|
"https://cos.local/connection/sso/check"
|
|
|
|
|
],
|
|
|
|
|
"webOrigins": [
|
|
|
|
|
"https://ticket.e-cosplay.fr",
|
|
|
|
|
"https://cos.local"
|
|
|
|
|
],
|
|
|
|
|
"protocol": "openid-connect",
|
|
|
|
|
"standardFlowEnabled": true,
|
|
|
|
|
"implicitFlowEnabled": false,
|
|
|
|
|
"directAccessGrantsEnabled": false,
|
|
|
|
|
"serviceAccountsEnabled": false,
|
|
|
|
|
"frontchannelLogout": true,
|
|
|
|
|
"attributes": {
|
|
|
|
|
"post.logout.redirect.uris": "https://ticket.e-cosplay.fr/*##https://cos.local/*",
|
|
|
|
|
"pkce.code.challenge.method": "S256"
|
|
|
|
|
}
|
Go-live, ecosplay realm-as-code, and full theme coverage
Go-live:
- Switch keycloak from start-dev to start --import-realm (production
mode with auto-build at boot, no Dockerfile needed yet).
- Set KC_HOSTNAME=https://auth.e-cosplay.fr and KC_PROXY_HEADERS=
xforwarded so Keycloak emits correct issuer URLs and trusts
Caddy's X-Forwarded-* headers.
- Replace deprecated KEYCLOAK_ADMIN env vars with KC_BOOTSTRAP_ADMIN_*.
- Bind the public port to 127.0.0.1 only (Caddy is colocated).
- Add a Keycloak healthcheck against /health/ready on the management
port (9000) using bash /dev/tcp; init container now waits on
service_healthy instead of service_started.
Architecture:
- New realms/ecosplay-realm.json mounted into /opt/keycloak/data/import
and imported on first boot. Defines the dedicated 'ecosplay' realm
(separate from master) with French i18n, brute-force protection,
strong password policy, SES SMTP, and an OIDC client 'ecosplay-web'
pointing at e-cosplay.fr (confidential + PKCE S256).
Theme coverage:
- themes/ecosplay/account: PatternFly v5 overlay (parent=keycloak.v2)
bringing the neo-brutalist colors, thick borders, italic uppercase
typography, and offset hard shadows to the user account console.
- themes/ecosplay/email: branded HTML wrapper template (table layout
with inline styles for email-client safety) plus a matching plain
text wrapper. All Keycloak emails now ship with the E-Cosplay
identity without needing per-template overrides.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:22:40 +02:00
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|