Der Token-Flow mit Keycloak, Angular und Spring Boot kann in einem typischen OAuth 2.0- und OpenID Connect-Szenario wie folgt beschrieben werden: 1. **Keycloak-Konfiguration:** - Richte einen Realm in Keycloak ein. - Erstelle einen Client für die Angular-Anwendung und einen weiteren für die Spring Boot-Anwendung. - Konfiguriere die Clients entsprechend, z.B. mit Redirect-URIs und Client-Secret. 2. **Angular-Anwendung:** - Verwende eine Bibliothek wie `keycloak-angular`, um die Authentifizierung zu integrieren. - Konfiguriere die Keycloak-Instanz in der Angular-Anwendung, indem du die Keycloak-URL, den Realm und den Client-ID angibst. - Implementiere eine Login-Funktion, die den Benutzer zu Keycloak weiterleitet, um sich zu authentifizieren. - Nach erfolgreicher Authentifizierung erhält die Angular-Anwendung ein Access-Token und ein ID-Token von Keycloak. 3. **Token-Handling in Angular:** - Speichere das Access-Token sicher (z.B. im Speicher der Anwendung). - Verwende das Access-Token, um API-Anfragen an die Spring Boot-Anwendung zu authentifizieren. 4. **Spring Boot-Anwendung:** - Integriere Keycloak in die Spring Boot-Anwendung, z.B. mit der `spring-boot-starter-oauth2-resource-server` Abhängigkeit. - Konfiguriere die Anwendung so, dass sie das Access-Token validiert, indem du die Keycloak-URL, den Realm und den Client-ID angibst. - Implementiere Sicherheitskonfigurationen, um sicherzustellen, dass nur authentifizierte Anfragen zugelassen werden. 5. **Token-Validierung:** - Wenn die Angular-Anwendung eine Anfrage an die Spring Boot-Anwendung sendet, wird das Access-Token im Authorization-Header der Anfrage mitgeschickt. - Die Spring Boot-Anwendung validiert das Access-Token gegen Keycloak. - Bei erfolgreicher Validierung wird die Anfrage verarbeitet und eine Antwort an die Angular-Anwendung zurückgesendet. Hier ist ein vereinfachtes Beispiel für die Konfiguration in Angular und Spring Boot: **Angular:** ```typescript import { KeycloakService } from 'keycloak-angular'; const keycloakService = new KeycloakService(); keycloakService.init({ config: { url: 'https://keycloak-server/auth', realm: 'your-realm', clientId: 'your-angular-client' }, initOptions: { onLoad: 'login-required' } }); ``` **Spring Boot (application.properties):** ```properties spring.security.oauth2.resourceserver.jwt.issuer-uri=https://keycloak-server/auth/realms/your-realm spring.security.oauth2.resourceserver.jwt.jwk-set-uri=https://keycloak-server/auth/realms/your-realm/protocol/openid-connect/certs ``` Diese Konfigurationen ermöglichen es, dass die Angular-Anwendung Benutzer authentifiziert und Access-Tokens erhält, die dann von der Spring Boot-Anwendung validiert werden können, um geschützte Ressourcen bereitzustellen.