Skip to content
Snippets Groups Projects

This repository is for the OZG application room.

Getting Started

Weitere Dokumentation

Weitere Informationen finden Sie unter folgenden Links:

Guides

Mehr informationen zu den verwendeten Feature sind hier:

Healthchecks sind hier:

Der Info Endpoint hat auch die build Informationen.

Das REST Interface ist mit OpenAPI V3 dokumentiert und kann auf der Swagger-Seite angesehen werden

http://localhost:8080/swagger-ui/index.html

SAML Zertifikate

Da die SAML Daten signiert und verschlüsselt werden muss man beim Erstellen der Metadaten für das BaynId Portal passende Zertifikate erzeugen. Das ist hier beschrieben.

Umgebung Austauschen am Läuft ab am
Prod 10.12.2026 11.09.2027
Test 02.07.2025 02.08.2025
Dev n.a n.a

Anwendung starten

Es gibt drei Profile:

  • default - Das Profil für die Produktionsumgebung
  • local - Das Profil für die Entwicklung
  • lasttest - Das Profil um Lasttests auszuführen.

Man kann die Anwendung über die Kommandozeile starten

./mvnw spring-boot:run -Dspring-boot.run.profiles=local

Um den Port der Management api zu ändern, kann man den Befehl verwenden

./mvnw spring-boot:run -Dmanagement.server.port=8081

oder man verwenden docker compose

  mongodb:
    image: mongo:4
    ports:
      - "27017:27017"
    environment:
      - MONGODB_EXTRA_FLAGS=--profile=2
    volumes:
      - mongodb-data:/data/db
  clamav:
    ports:
      - '3310:3310'
    image: 'docker.ozg-sh.de/clamav/clamav:stable'
  clamav-api:
    image: benzino77/clamav-rest-api
    command: [ '/usr/bin/wait-for-it', '-h', 'lt-clamav', '-p', '3310', '-s', '-t', '300', '--', 'npm', 'start' ]
    depends_on:
      - clamav
    environment:
      - NODE_ENV=production
      - CLAMD_IP=lt-clamav
      - APP_FORM_KEY=FILES
      - APP_PORT=3000
      - APP_MAX_FILE_SIZE=26214400
    ports:
      - "3000:3000"
  info-manager:
    image: 'docker.ozg-sh.de/info-manager:snapshot-latest'
    platform: linux/amd64
    ports:
      - '9091:9091'
      - '8084:8084'
    environment:
      - SPRING_DATA_MONGODB_HOST=lt-mongodb
      - SPRING_DATA_MONGODB_PORT=27017
      - SPRING_DATA_MONGODB_DATABASE=lt-info-manager
      - GRPC_SERVER_PORT=9091
      - SPRING_PROFILES_ACTIVE=default
      - MANAGEMENT_SERVER_PORT=8084
      - SERVER_PORT=8083
      - logging_level_de_ozgcloud=INFO
  info-manager-proxy:
    image: 'docker.ozg-sh.de/info-manager-proxy:snapshot-latest'
    ports:
      - 8381:8082
    environment:
      - HTTP_SERVER_PORT=8082
      - GRPC_SERVER_MOCK=false
      - GRPC_URL=lt-info-manager:9091
      - LOGGING_LEVEL=DEBUG
    depends_on:
      - info-manager
  antragraum-server:
    image: 'docker.ozg-sh.de/antragsraum-server:snapshot-latest'
    platform: linux/amd64
    ports:
      - '9090:9090'
      - '8080:8080'
      - '8081:8081'
    environment:
      - SPRING_PROFILES_ACTIVE=lasttest
      - ozgcloud_jwt_secret="346593nbdgb8e74t6vw477q34bg83456§$$%/&Hgvt78hlsjdgfw8äy.skeiw44tz asjkdefa wlfugwegw"
      - ozgcloud_antragsraum_bayernid_redirect-url=http://localhost:8082
      - clamav_scanUrl=http://clamav-api:3000/api/v1/scan
      - logging_level_org_springframework_web=INFO
      - SPRING_SECURITY_SAML2_RELYINGPARTY_REGISTRATION_BAYERNID_ENTITY-ID=https://sso.load.by.ozg-cloud.de/realms/by-antragsraum-idp
      - SPRING_SECURITY_SAML2_RELYINGPARTY_REGISTRATION_BAYERNID_ASSERTINGPARTY_METADATA-URI=https://sso.dev.by.ozg-cloud.de/realms/by-antragsraum-idp/protocol/saml/descriptor
      - SPRING_SECURITY_SAML2_RELYINGPARTY_REGISTRATION_BAYERNID_SIGNING_CREDENTIALS_0_PRIVATE-KEY-LOCATION=file:///idp.key
      - SPRING_SECURITY_SAML2_RELYINGPARTY_REGISTRATION_BAYERNID_SIGNING_CREDENTIALS_0_CERTIFICATE-LOCATION=file:///idp.crt
      - SPRING_SECURITY_SAML2_RELYINGPARTY_REGISTRATION_BAYERNID_DECRYPTION_CREDENTIALS_0_PRIVATE-KEY-LOCATION=file:///idp.key
      - SPRING_SECURITY_SAML2_RELYINGPARTY_REGISTRATION_BAYERNID_DECRYPTION_CREDENTIALS_0_CERTIFICATE-LOCATION=file:///idp.crt
    volumes:
      - type: bind
        source: bayernid-dev-sign.crt
        target: /idp.crt
        read_only: true
      - type: bind
        source: bayernid-dev-sign.key
        target: /idp.key
        read_only: true
  antragraum-proxy:
    image: 'docker.ozg-sh.de/antragsraum-proxy:snapshot-latest'
    ports:
      - 8383:8082
    environment:
      - HTTP_SERVER_PORT=8082
      - GRPC_SERVER_MOCK=false
      - GRPC_SERVER_PORT=9093
    deploy:
      resources:
        limits:
          cpus: '0.001'
          memory: 50M
        reservations:
          cpus: '0.0001'
          memory: 20M

Einstellungen

Wichtige Einstellungen

ozgcloud:
    antragsraum:
        nachricht-proxy:
            base-url: http://localhost:8383
        infomanager-proxy:
            base-url: http://localhost:8381
clamav:
    scanUrl: http://127.0.0.1:3000/api/v1/scan # The REST endpoint for virus scans
ozgcloud:
    code:
        expire:
            seconds: 30 # Time in seconds after the login code expires
    jwt:
        secret: "346593nbdgb8e74t6vw477q34bg83456§$%/&Hgvt78hlsjdgfw8äy.skeiw44tz asjkdefa wlfugwegw"
        # Secret of signing the Jwt Token provided to the front end.
    antragsraum:                
        logoutSuccessUrl: "http://localhost:8082/?logout"  # The redirect url after a logout
        authOrigins:            # the access-allow-oring setting for the authentication endpoints
            - "http://localhost:8082"
            - "http://localhost:8080"
        apiOrigins:             # the access-allow-oring setting for the rest endpoints
            - "http://localhost:8082"
        otherOrigins:           # the access-allow-oring setting for other path like static files etc.
            - "http://localhost:8082"

Die Einstellung für das BayernId Login sind hier beschrieben

BayernId Implementation and configuration

Auf dev wird Keycloak als ersatz für BayernId verwendet. Das Setup ist hier beschrieben

Keycloak Configuration

Useful Tools

curl

Ist eine Komandozeilenanwendung um http requests zu machen.

Beispiele:

Upload einer Datei

6358fd0bee7a051389cdd787 ist die Id des Vorgangs und 6358fd4146811d04010f44d1 ist die Id der Nachricht.

curl -F file=@</path/to/the/file/file_name>  http://localhost:8080/api/file/6358fd0bee7a051389cdd787/6358fd4146811d04010f44d1 -v

Verwendetet Ports

Lokale Dev Umgebung:

Port Application/Service Addresses
8080 Antragsraum REST Services http://localhost:8080/
8383 Antragsraum Proxy Api http://localhost:8383/
8082 Frontend http://localhost:8082/
8083 Antragsraum Actuator http://localhost:8083/actuator
8084 Infomanager Actuator http://localhost:8084/actuator
9091 Infomanager GRPC Service
8381 Infomanager Proxy Api http://localhost:8381/
27027 MongoDB

Für die lokale Entwicklung kann nur das SAML Login vom Keycloak verwendet werden.

Dafür muss das local verwendet werden. Dazu müssen diese Werte in der application-local.yml stehen:

spring:
  security:
    saml2:
      relyingparty:
        registration:
          bayernid:
            entity-id: "https://sso.dev.by.ozg-cloud.de/realms/by-antragsraum-idp"
            signing:
              credentials:
                - private-key-location: "classpath:/bayernid-dev-sign.key"
                  certificate-location: "classpath:/bayernid-dev-sign.crt"
            decryption:
              credentials:
                - private-key-location: "classpath:/bayernid-dev-sign.key"
                  certificate-location: "classpath:/bayernid-dev-sign.crt"
            assertingparty:
              singlesignon:
                sign-request: true
              metadata-uri: "https://sso.dev.by.ozg-cloud.de/realms/by-antragsraum-idp/protocol/saml/descriptor"      

Dann kann man die in Keycloak vorhandenen Benutzer verwenden.

Um das lokale Profil zu verwenden, muss die redirect url im Antragsraum-client auf http://localhost:8080/login gesetzt werden.

Weitere Informationen

Andere Tools:

mujina idp

Mujina ist ein SAML2 IdentityProvider zum testing und kann über ein REST Interface konfiguriert werden.

Um Mujina als Docker Container zu verwenden, muss dieser lokal gebaut werden.

Clone the repository https://github.com/OpenConext/Mujina
build the container using maven in the directory mujina-idp. mvn spring-boot:build-image -DskipTests
Tag the image docker tag mujina-idp:8.0.11 docker.ozg-sh.de/mujina-idp:8.0.11
Push the image docker push docker.ozg-sh.de/mujina-idp:8.0.11

Offene Punkte

  • Fehlerbehandlung verbesseren. Aktuell kann es dazu kommen, dass es wenn im Namspace einer Kommune zu einem Fehler beim Laden der Rückfragen kommt, dass nur ein genereller Fehler dem User anzeigt wird. Obwohl die Rückfragen aus anderen Kommunen problemlos geladen werden können.