1. Was ist Keycloak
Ein open source Software Produkt das die Authentifizierung von Usern für Applikationen übernimmt
SSO - Sigle Sign On
Alternativen:
2. Yml File für docker-compose
version: "3.9" services: postgres: container_name: postgres_blog image: "postgres:14.5" volumes: - ./db-data:/var/lib/postgresql/data/ - ./sql:/docker-entrypoint-initdb.d/:ro env_file: - ./database.dev.env ports: - "5432:5432" networks: - backend pgadmin: container_name: pgadmin_blog image: "dpage/pgadmin4:5.1" env_file: - ./database.dev.env ports: - "5050:80" networks: - backend keycloak: container_name: keycloak_blog image: "quay.io/keycloak/keycloak:19.0.2" env_file: - ./keycloak.dev.env depends_on: - "postgres" ports: - "8180:8080" - "8787:8787" # debug port networks: - backend networks: backend: name: backend driver: bridge
3. Quarkus mit Keycloak
Es gibt in den Dev Services einen Keycloak integriert.
3.1. Keycloak erstellen
docker run --name keycloak -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:19.0.2 start-dev
Alter Keycloak
Version 19.0.2
3.2. Schritt 3
Quarkus zu einem java Programm kompilieren und starten
./mvnw install
java -jar target/quarkus-app/quarkus-run.jar
3.3. Schritt 4
Token vom Keycloak anfordern für User anna mit passwort test
export access_token=$(\ curl --insecure -X POST http://localhost:8080/realms/quarkus/protocol/openid-connect/token \ --user backend-service:secret \ -H 'content-type: application/x-www-form-urlencoded' \ -d 'username=alice&password=alice&grant_type=password' | jq --raw-output '.access_token' \ )
echo $access_token