Dieses Dokument ist der Leitfaden zum Aktivieren der Keycloak-Authentifizierung für bestimmte Microservices.
Einrichtung und Konfiguration von Keycloak
Die Beschreibung und Konfiguration der Keycloak-Clients, Rollen und Mandantentrennung sind in dieser Dokumentation zu finden.
Keycloak Rollen und Mandantenfilterung
AS4 Address Service
1) Erstellen eines neuen Clients in Keycloak: as4-address-service.
2) Zu erstellende Rollen (fügen Sie diese Rollen auch Benutzern hinzu, die auf diesen Service zugreifen):
- AS4-TENANT-READ
- AS4-TENANT-WRITE
- AS4-PARTNER-READ
- AS4-PARTNER-WRITE
- AS4-PATHSWITCH-READ
- AS4-PATHSWITCH-WRITE
3) Mandantentrennung:
Die Mandanten müssen zu den Benutzerattributen des Benutzers hinzugefügt werden. Zudem muss ein Tenant Mapper erstellt werden.
Ist eine Mandantentrennung im Einsatz oder gewünscht, so kann sich an der bestehenden Dokumentation orientiert werden.
Keycloak Rollen und Mandantenfilterung
4) Hinzufügen der folgenden Eigenschaften zur application.properties
Standardmäßig ist Keycloak deaktiviert. Das heißt, das Profil no-keycloak-enriched ist aktiv.
application.properties:
deaktiviert (default) | aktiviert |
---|---|
spring.profiles.active=no-keycloak-enriched |
spring.profiles.active=keycloak-enriched |
5) Erstellen und Mounten der Datei application-keycloak-enriched.properties, um Keycloak-Informationen bereitzustellen
Beispiel application-keycloak-enriched.properties:
keycloak.enabled=true
keycloak.auth-server-url=https://<Ihr-Keycloak-Server>/auth
keycloak.realm=<Ihr-Keycloak-Realm>
keycloak.resource=as4-address-service
keycloak.credentials.secret=<Secret des Clients>
keycloakUsername=<Maschinen-User zum Zugriff auf den FSS>
keycloakPassword=<Passwort des Maschinen-Users>
Beispiel für Docker-Compose zum Mounten der neuen application-keycloak-enriched.properties
Fügen Sie application-keycloak-enriched.properties zu /conf/as4-address-service hinzu und aktualisieren Sie diese Eigenschaft
- SPRING_CONFIG_ADDITIONAL-LOCATION=/var/lib/config/as4-address-service.properties,/var/lib/config/application-keycloak-enriched.properties
AS4 Receipt Service
1) Erstellen eines neuen Clients in Keycloak: as4-receipt-service.
2) Zu erstellende Rollen (fügen Sie diese Rollen auch Benutzern hinzu, die auf diesen Service zugreifen):
- AS4-PARTNER-READ
3) Mandantentrennung:
Die Mandanten müssen zu den Benutzerattributen des Benutzers hinzugefügt werden. Zudem muss ein Tenant Mapper erstellt werden.
Ist eine Mandantentrennung im Einsatz oder gewünscht, so kann sich an der bestehenden Dokumentation orientiert werden.
Keycloak Rollen und Mandantenfilterung
4) Hinzufügen der folgenden Eigenschaften zur application.properties
Standardmäßig ist Keycloak deaktiviert. Das heißt, das Profil no-keycloak-enriched ist aktiv.
application.properties:
deaktiviert (default) | aktiviert |
---|---|
spring.profiles.active=no-keycloak-enriched |
spring.profiles.active=keycloak-enriched |
5) Erstellen und Mounten der Datei application-keycloak-enriched.properties, um Keycloak-Informationen bereitzustellen
Beispiel application-keycloak-enriched.properties:
keycloak.enabled=true
keycloak.auth-server-url=http://<host>:9000/auth
keycloak.realm=as4
keycloak.resource=as4-receipt-service
keycloak.bearer-only=true
Beispiel für Docker-Compose zum Mounten der neuen application-keycloak-enriched.properties
Fügen Sie application-keycloak-enriched.properties zu /conf/as4-address-service hinzu und aktualisieren Sie diese Eigenschaft
- SPRING_CONFIG_ADDITIONAL-LOCATION=/var/lib/config/as4-receipt-service.properties,/var/lib/config/application-keycloak-enriched.properties
AS4 Message Service
1) Erstellen eines neuen Clients in Keycloak: as4-message-service.
2) Zu erstellende Rollen (fügen Sie diese Rollen auch Benutzern hinzu, die auf diesen Service zugreifen):
- AS4-MESSAGE-READ
- AS4-MESSAGE-WRITE
3) Mandantentrennung:
Die Mandanten müssen zu den Benutzerattributen des Benutzers hinzugefügt werden. Zudem muss ein Tenant Mapper erstellt werden.
Ist eine Mandantentrennung im Einsatz oder gewünscht, so kann sich an der bestehenden Dokumentation orientiert werden.
Keycloak Rollen und Mandantenfilterung
4) Hinzufügen der folgenden Eigenschaften zur application.properties. Standardmäßig ist Keycloak deaktiviert. Das heißt, das Profil no-keycloak-enriched ist aktiv.
application.properties:
deaktiviert (default) | aktiviert |
---|---|
spring.profiles.active=no-keycloak-enriched |
spring.profiles.active=keycloak-enriched |
5) Erstellen und Mounten der Datei application-keycloak-enriched.properties, um Keycloak-Informationen bereitzustellen
Beispiel application-keycloak-enriched.properties:
keycloak.enabled=true
keycloak.auth-server-url=http://<host>:9000/auth
keycloak.realm=as4
keycloak.resource=as4-message-service
keycloak.bearer-only=true
Beispiel für Docker-Compose zum Mounten der neuen application-keycloak-enriched.properties
Fügen Sie application-keycloak-enriched.properties zu /conf/as4-message-service hinzu und aktualisieren Sie diese Eigenschaft
- SPRING_CONFIG_ADDITIONAL-LOCATION=/var/lib/config/as4-address-message.properties,/var/lib/config/application-keycloak-enriched.properties
CSR Service
1) Erstellen eines neuen Clients in Keycloak: csr-service.
Es ist zu beachten, dass Client authentication aktiviert ist.
Dies ist erforderlich, da dieser Service eine Verbindung zu anderen Microservices wie dem FSS-Service herstellt.
2) Zu erstellende Rollen (fügen Sie diese Rollen auch Benutzern hinzu, die auf diesen Service zugreifen):
- AS4-CSR-WRITE
- AS4-CSR-READ
3) Mandantentrennung:
Die Mandanten müssen zu den Benutzerattributen des Benutzers hinzugefügt werden. Zudem muss ein Tenant Mapper erstellt werden.
Ist eine Mandantentrennung im Einsatz oder gewünscht, so kann sich an der bestehenden Dokumentation orientiert werden.
Keycloak Rollen und Mandantenfilterung
4) Hinzufügen der folgenden Eigenschaften zur application.properties. Standardmäßig ist Keycloak deaktiviert. Das heißt, das Profil no-keycloak-enriched ist aktiv.
application.properties:
deaktiviert (default) | aktiviert |
---|---|
spring.profiles.active=no-keycloak-enriched |
spring.profiles.active=keycloak-enriched |
5) Erstellen und Mounten der Datei application-keycloak-enriched.properties, um Keycloak-Informationen bereitzustellen
Beispiel application-keycloak-enriched.properties:
keycloak.enabled=true
keycloak.auth-server-url=http://<host>:9000/auth
keycloak.realm=as4
keycloak.resource=csr-service
keycloak.bearer-only=true
keycloak.credentials.secret=<secret>
#These properties are to connect to other services such as FSS-Service
keycloakUsername=username
keycloakPassword=password
Beispiel für Docker-Compose zum Mounten der neuen application-keycloak-enriched.properties
Fügen Sie application-keycloak-enriched.properties zu /config/csr-service und dieser Eigenschaft hinzu
- ./config/crypto-csr/application-keycloak-enriched.properties:/opt/config/application-keycloak-enriched.properties
6) Dieser Service greift auf den FSS-Service zu und verwendet die Eigenschaften keycloakUsername und keycloakPassword.
- Erstellen Sie einen Benutzer in Keycloak und fügen Sie dem Keycloak-Benutzer die folgenden Rollen hinzu, um eine Verbindung mit dem FSS herzustellen
- FSS-CertificateManager-Read
- FSS-CertificateManager-Write
- HSM-Key-Read (Maschinenrolle, die keinem Menschen zugewiesen werden darf.)
- HSM-Key-Write
- HSM-Key-Operations
-
Für diesen User muss das Attribute fss_tenants hinzugefügt werden
- Dem Client csr-service muss der Tenant Mapper für den fss_tenant hinzugefügt werden.
CRL Downloader Service
1) Erstellen eines neuen Clients in Keycloak:
Es ist zu beachten, dass die Rollen Client authentication und Service accounts roles aktiviert sind.
Dies ist erforderlich, da dieser Service eine Verbindung zu anderen Microservices wie dem FSS-Service herstellt.
2) Zu erstellende Rollen (fügen Sie diese Rollen auch Benutzern hinzu, die auf diesen Service zugreifen):
- CRL-READ
3) Hinzufügen der folgenden Eigenschaften zur application.properties. Standardmäßig ist Keycloak deaktiviert. Das heißt, das Profil no-keycloak-enriched ist aktiv.
application.properties:
deaktiviert (default) | aktiviert |
---|---|
spring.profiles.active=no-keycloak-enriched |
spring.profiles.active=keycloak-enriched |
4) Erstellen und Mounten der Datei **application-keycloak-enriched.properties, um Keycloak-Informationen bereitzustellen**
Beispiel application-keycloak-enriched.properties:
keycloak.enabled=true
keycloak.auth-server-url=http://<host>:9000/auth
keycloak.realm=as4
keycloak.resource=crl-downloader-service
keycloak.bearer-only=true
keycloak.credentials.secret=<secret>
Beispiel für Docker-Compose zum Mounten der neuen application-keycloak-enriched.properties
Fügen Sie application-keycloak-enriched.properties zu /config/crl-downloader hinzu und aktualisieren Sie diese Eigenschaft
- SPRING_CONFIG_ADDITIONAL-LOCATION=optional:${AS4_PROP_FILE}, optional:${AS4_YML_FILE}, optional:${AS4_KEYCLOAK_ENRICHED_FILE}
6) Dem Client muss in Keycloak folgende Servicekontorolle hinzugefügt werden, um sicherzustellen, dass CRL-Downloader-Service den FSS-Service mit Keycloak-Authentifizierung aufruft.
- FSS-Crl
AS4 Clients
Die folgenden AS4 Services sprechen andere Microservices per Rest API an. Solche Aufrufe sind durch Keycloak abzusichern, wenn sich für eine Keycloak-Authentifizierung der AS4 Services entschieden wurde.
- AS4 Outbound Market Message Service
- AS4-Crypto-Operations
- AS4-Inbound-Endpoint
- AS4 Outbound Sender
Folgende Schritte müssen für alle 4 Services durchgeführt werden:
1) Erstellen eines neuen Clients in Keycloak: as4-backend.
Es ist zu beachten, dass Client authentication aktiviert ist.
Dies ist erforderlich, da dieser Service eine Verbindung zu anderen Microservices wie dem FSS-Service herstellt.
- Erstellen Sie einen Benutzer in Keycloak und fügen Sie dem Keycloak-Benutzer die folgenden Rollen hinzu, um eine Verbindung zum FSS und AS4 Address Service herzustellen
- FSS-CertificateManager-Read
- FSS-CertificateManager-SMPKI-Read
- AS4-PARTNER-READ
- HSM-Key-Read (Maschinenrolle, die keinem Menschen zugewiesen werden darf.)
- HSM-Key-Operations
-
Für diesen User müssen die Attribute tenants und fss_tenants hinzugefügt werden
-
Dem Client as4-backend muss der Tenant Mapper für den tenant hinzugefügt werden.
- Dem Client as4-backend muss der Tenant Mapper für den fss_tenant hinzugefügt werden.
2) Allen 4 Services müssen folgende Eigenschaften in der application.properties hinzugefügt werden.
Beispiel application.properties:
deaktiviert (default) | aktiviert |
---|---|
keycloak.rest-client=false |
keycloak.rest-client=true |
Der Default für die Abischerung der Rest API ist false (deaktiviert)
keycloak.rest-client=false
keycloak.auth-server-url=http://host.docker.internal:9000/auth
keycloak.realm=as4
keycloak.resource=as4-backend
keycloak.credentials.secret=<secret>
keycloak.username=
keycloak.password=
Docker environment : Fügen Sie die oben genannten Keycloak-Eigenschaften zu den vorhandenen application.properties hinzu und aktualisieren Sie die Eigenschaften nach Bedarf, um das Standardverhalten zu überschreiben
AS4-Crypto-Operations & Keycloak Https Falls Keycloak per HTTPS gesichert ist und falls der AS4-Crypto-Operations genutzt werden soll, muss am AS4-Crypto-Operations (Backend) folgender Parameter ergänzt werden:
JAVA_OPTS=-Djavax.net.ssl.trustStoreType=jks
B2B Message Service
1) Erstellen eines neuen Clients in Keycloak: b2b-message-service.
2) Zu erstellende Rollen (fügen Sie diese Rollen auch Benutzern hinzu, die auf diesen Service zugreifen):
- B2B-Execution
3) Mandantentrennung:
Die Mandanten müssen zu den Benutzerattributen des Benutzers hinzugefügt werden. Zudem muss ein Tenant Mapper erstellt werden.
Ist eine Mandantentrennung im Einsatz oder gewünscht, so kann sich an der bestehenden Dokumentation orientiert werden.
Keycloak Rollen und Mandantenfilterung
4) Hinzufügen der folgenden Eigenschaften zur application.properties. Standardmäßig ist Keycloak deaktiviert. Das heißt, das Profil no-keycloak-enriched ist aktiv.
application.properties:
deaktiviert (default) | aktiviert |
---|---|
spring.profiles.active=no-keycloak-enriched |
spring.profiles.active=keycloak-enriched |
5) Erstellen und Mounten der Datei application-keycloak-enriched.properties, um Keycloak-Informationen bereitzustellen
Beispiel application-keycloak-enriched.properties:
keycloak.enabled=true
keycloak.auth-server-url=http://<host>:9000/auth
keycloak.realm=as4
keycloak.resource=B2B-message-service
keycloak.bearer-only=true
Beispiel für Docker-Compose zum Mounten der neuen application-keycloak-enriched.properties
Fügen Sie application-keycloak-enriched.properties zu /conf/as4-message-service hinzu und aktualisieren Sie diese Eigenschaft
- SPRING_CONFIG_ADDITIONAL-LOCATION=/var/lib/config/b2b-message-service.properties,/var/lib/config/application-keycloak-enriched.properties