Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VRLbHYdXVEBzGVhYq3pz4q
1.6 KiB
1.6 KiB
keycloak
Companion code for Keycloak with Spring Boot 4.1: Roles, Resource Server and Admin API.
Spring Boot 4.1.1, Spring Security 7.1.1, Keycloak server 26.8.1, keycloak-admin-client 26.0.12, JDK 25.
| Piece | Code |
|---|---|
| Realm with roles, clients, users and a service account | realm/demo-realm.json |
| Resource server, audience check, Keycloak role mapping | application.yml, SecurityConfig, KeycloakJwtConverter |
| Method security | ApiController, UserAdminService (@PreAuthorize) |
Admin API through keycloak-admin-client |
UserAdminService |
| Tests against a real Keycloak | KeycloakIntegrationTest (skipped when nothing listens on keycloak.url) |
| Same realm in a container | KeycloakTestcontainersTest (needs Docker) |
./scripts/run-all.sh # downloads Keycloak from Maven Central, imports the realm, runs the tests, writes cap/*.txt
What was and was not run
- Everything in
cap/came from a real Keycloak 26.8.1 (kc.sh start-dev, unpacked from the Maven Central distribution) and the real Spring application. This machine has no Docker. KeycloakTestcontainersTestcompiles and is skipped without Docker. It was not run, so the Testcontainers path is untested here.start-devis for development only: HTTP, an embedded H2 database, relaxed hostname checks. Production Keycloak needskc.sh startwith TLS, a real database and a configured hostname.- The users' passwords (
password) and theadmin-svcclient secret in the realm file are demo values.