Authentifizierung für Microservices mithilfe der Keycloak-Dokumentation

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.

Create Client

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=http://<host>:9000/auth
keycloak.realm=as4
keycloak.resource=as4-address-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-address-service.properties,/var/lib/config/application-keycloak-enriched.properties

AS4 Receipt Service

1) Erstellen eines neuen Clients in Keycloak: as4-receipt-service.

Create Client

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.

Create Client

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.

Create Client

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.

Create Client

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.

Create Client

  • 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
View Me   Edit Me