ich versuche seit einiger Zeit eure Web-Version zum Laufen zu bekommen und möchte nun einmal um Hilfe bitten.
Ich bin mittlerweile so weit, dass ich mit „/initial“ einen Account erstellen kann.
Die vorherigen Hürden waren, dass der Client „veo-accounts“ nicht genügend Berechtigungen hatte und dadurch der Service-Account nutzlos war.
Für alle die dasselbe Problem haben hier einmal der Quickfix: Clients → veo-accounts → Client scopes → veo-accounts-dedicated → Scope → Berechtigungen hinzufügen
Zusätzlich dazu braucht der Service-Nutzer auch noch alle Rollen (zu faul zu testen, welche wirklich nötig sind). Danach noch ein neustart des accounts-spring-service und die „/initial“-Request sollte funktionieren.
Jetzt wurde mein Testaccount mit einem der beiden bereits existierenden Klienten erstellt. Dadurch kann ich mich erfolgreich auf der Webseite anmelden, allerdings erhalte ich die Meldung „The client 15dc8c0d-a81e-4bb6-8d98-e5ce12e161fb does not exist or is deactivated.“, was darauf hinweist das die „/initial“-Request den vorhandenen Klienten nicht in die Datenbank geschrieben bzw. nicht die api über rabbitmq benachrichtigt hat.
Ist dieses Verhalten trotz der „/initial“-Request normal und hättet ihr einen hilfreichen Tipp für mich? Was muss beim Web in die Umgebungsvariable „VEO_ACCOUNT_PATH“ hinein?
Der Service-Account mit seinen Rollen ist leider nicht im Realm-Export enthalten und muss somit für den Client „veo-accounts“ in jedem neuen Keycloak neu mit Rechten versehen werden. Wir bauen hier noch eine bessere Lösung.
Falls Du die Berechtigungen aufräumen möchtest, der Service-User braucht minimal nur die Roles:
realm-management:manage-users
realm-management: query-users
realm-management: view-users
realm-management: query-groups
Als inherited roles sollte er zusätzlich schon haben:
account:manage-account
account:manage-account-links
account:view-profile
veo-user
default-roles-verinice-veo
Zu Deinem Problem: Wurde in der Datenbanktabelle „client“ eine Zeile mit der UUID 15dc… angelegt?
Falls nicht, sieht es danach aus, also ob die Message über RabbitMQ nicht angekommen ist - wäre auch mein erster Verdacht. Du kannst Dich auf der Mgmt-Konsole in RabbitMQ anmelden (HTTP Port 15672), dort solltest Du sehen können, ob die Exchanges und Queues existieren, ob die Services daran lauschen und ob die Routing-Keys stimmen. Wenn eine Message erzeugt aber nicht zugestellt wurde, sieht man das auch dort.
Die Exchanges/Queues werden von den Services alle automatisch beim Start angelegt, wenn sie noch nicht existieren. Hier ist also keine separate Config nötig.
VEO_ACCOUNT_PATH kann man ignorieren, das ist nur der Link zum Shop-System (Public: account.verinice.com), der anpassbar ist für Whitelabel-Installationen, die mit separatem Shop betrieben werden sollen. Kann aber auch gesetzt werden auf z.B. „keinshop.lokalinstalliert.example“.
ich habe deine minimale Rollenzuweisung probiert und bei mir funktionieren nur die direkt dem User gegebene Rollen und wenn ich dieselben und deine im Scope von „veo-accounts-dedicated“ vom Klient „veo-acconts“ hinzufüge.
Zum zweiten Problem habe ich herausgefunden, dass sich alle anderen Services mit den gleichen Umgebungsvariablen perfekt mit dem RabbitMQ-Server verbinden, der Rest-Service diese Verbindung allerdings nicht aufbaut. Für die Definition der Verbindung habe ich die Umgebungsvariablen „spring_rabbitmq_host“, „spring_rabbitmq_port“, „spring_rabbitmq_username“ und „spring_rabbitmq_password“ verwendet. Diese sollten auch laut der application.yml für rabbitmq verwendet werden und für jeden Service wurde die gleiche Konfiguration in den Variablen verwendet.
In der Mgmt-Konsole von RabbitMQ war keine Verbindung vom Rest-Service erkennbar und nach ein bissel testen ist mir aufgefallen, dass selbst bei einem falschen Passwort keine Fehlermeldung in den Logs kommt. Ist die Integration von RabbitMQ überhaupt standardmäßig aktiviert? Der Service läuft mit dem Profil „default“.
Noch eine weitere Anmerkung. Die Mgmt-Konsole in RabbitMQ zeigt keine gesendeten Packete vom Accounts-Service an und lässt mich deshalb vermuten, dass er gar keine Message an den Rest-Service schickt.
An der Konfiguration habe ich nichts geändert und anmelden tut sich der Accounts-Service bei RabbitMQ scheinbar korrekt.