Integration eines R-Profil-Verfahrens

Reverse Proxy einrichten

Der USP Reverse Proxy empfängt die Anfragen des User-Agents, prüft die Authentizität und Autorisierung des jeweiligen Benutzers und leitet die Anfragen an das Verfahren weiter. Dafür sind folgende Anforderungen notwendig:

1. Netzwerkverbindung

Der USP Reverse Proxy muss den Server Ihres Verfahrens netzwerktechnisch erreichen können. Dazu sind unter Umständen sowohl auf USP, als auch auf Verfahrensseite Firewall- und andere Netzwerkkonfigurationen notwendig. Falls sich die zu integrierende Anwendung nicht innerhalb des BRZ-Netzwerkes befindet, ist es erforderlich, dass das Anwendungsnetzwerk HTTPS-Verbindungen von der BRZ NAT-IP auf Port 443 zulässt.

Die BRZ NAT-IP erhalten Sie im Rahmen der Anbindung.

2. TLS-Zertifikate

Der USP Reverse Proxy akzeptiert ausschließlich öffentlich anerkannte TLS-/SSL-Zertifikate vertrauenswürdiger Certificate Authorities, sowie Zertifikate vom Bundesrechenzentrum (BRZ) bzw. Bundesministerium für Inneres (BMI). Self-signed-Zertifikate oder Zertifikate aus nicht öffentlichen bzw. privaten Certificate Authorities werden nicht unterstützt.

3. Session-Management

Verfahren, die über ein R-Profil in USP integriert sind, sollten nach Möglichkeit stateless sein. Das heißt: Sie verwalten keine eigene Anwendungs-Session am Server. Sollte das aus anwendungsspezifischen Gründen dennoch notwendig sein, muss sichergestellt sein, dass die existierende Anwendungs-Session invalidiert wird, sobald benutzeridentifizierende PVP-Header ihren Wert ändern. Das geschieht, wenn sich eine Person mit einem Benutzer anmeldet und das Verfahren aufruft und sich anschließend ummeldet (z.B. ein anderes Unternehmen auswählt) und das Verfahren nochmal aufruft.

Das USP kann bei einem Benutzerwechsel in Mein USP die R-Verfahren nicht direkt über den Wechsel informieren: Das R-Verfahren muss daher bei jedem HTTP-Request die PVP-Header analysieren und bei Bedarf seine eigene Session invalidieren oder anpassen. Geschieht dies nicht, dann arbeitet das Verfahren mit den User-Daten des vorherigen Users und zeigt dem Benutzer möglicherweise die falschen Daten an.
Anwendungen müssen daher ihre bestehenden Sessions erneuern, sobald sie über den Reverse Proxy neue oder geänderte HTTP-Header erhalten. Sessions, die weiterhin auf
Basis der ursprünglichen Header verwendet werden, gelten als ungültig.

4. Hostname und URLs

Der USP Reverse Proxy erhält die Anfragen über eine definierte URL-Struktur, die wie folgt aufgebaut ist:

  • https://[VERFAHREN].services.usp.gv.at/at.gv.[VERFAHREN]-[STAGE]/**
  • z.B.: https://xyz.services.usp.gv.at/at.gv.xyz-p/**

Diese Anfragen werden an die Anwendung in der folgenden Form weitergeleitet:

  • https://[VERFAHREN-DOMAIN]/at.gv.[VERFAHREN]-[STAGE]/**
  • z.B.: https://anwendung-host/at.gv.xyz-p/**
  • X-Forwarded-Host: app.services.usp.gv.at
  • X-Forwarded-Prefix: /at.gv.xyz-p

Das Verfahren muss unter dem Kontext /at.gv.xyz-p erreichbar sein, wobei gv.xyz-p prinzipiell vom Verfahren frei wählbar ist. Konventionell definiert das Suffix -p die Produktionsumgebung, -t die Testumgebung und -q die Qualitätssicherungsumgebung.

Achtung

Verfahren müssen bei applikationsseitigen Redirects sicherstellen, dass keine absoluten Redirects stattfinden und der User-Agent immer auf dem USP Reverse Proxy bleibt. Dazu können die vom USP Reverse Proxy übermittelten X-Forwarded-Header (XFF) verwendet werden.

Attribute im R-Profil

Attribute werden als HTTP-Header an das Verfahren übermittelt. Nicht-ASCII-Zeichen und das kaufmännische "und" (&) werden HTML-Entity-encoded (HTML Decimal Numeric Character Reference) übermittelt, gemäß PVP Version 2 R-Profil.

Friendly NameHeaderBeispielwert
PVP-VERSIONX-Pvp-Version2.3
PARTICIPANT-IDX-Pvp-Participant-IdAT:B:115-USP
EID-CITIZEN-QAA-EIDAS-LEVELX-Pvp-Eid-Citizen-Qaa-Eidas-
Level
http://eidas.europa.eu/LoA/high
EID-SIGNER-CERTIFICATEX-Pvp-Eid-Signer-CertificateMIIDXT…ZZKJEQxg==
EID-ISSUING-NATIONX-Pvp-Eid-Issuing-NationAT
SECCLASSX-Pvp-Secclass2
ROLESX-Pvp-RolesXYZ_Benutzer();XYZ_Admin()
BPKX-Pvp-BpkXFN+468924i:sJ0uDLw8UQNEbhChZpwKCP
SSp9thLzKQI=
ENC-BPK-LISTX-Pvp-Enc-Bpk-List(bpkBereich1|bpkValue1);(bpkBereich2|bpkVal
ue2)...
PRINCIPAL-NAMEX-Pvp-Principal-NameXXXUSP1 Törőcsik
GIVEN-NAMEX-Pvp-Given-NameXXXUSP1 Ĥáčęk
BIRTHDATEX-Pvp-Birthdate1972-02-13
PERSON-COUNTRY-CODEX-Usp-Person-Country-CodeÖsterreich
PERSON-ZIPX-Usp-Person-Zip1030
PERSON-CITYX-Usp-Person-CityWien
PERSON-STREETX-Usp-Person-StreetLandstrasse
PERSON-HOUSE-NUMBERX-Usp-Person-House-Number1A-2B
USERIDX-Pvp-Userid507639@usp.gv.at
GIDX-Pvp-Gid507639@usp.gv.at
MAILX-Usp-Mailmustermann@example.com
OUX-Pvp-OuUSP-Betrieb Testunternehmen
OU-GV-OU-IDX-Pvp-Ou-Gv-Ou-IdR057I054T
ENTERPRISE-KEYSX-Usp-Enterprise-KeysRF#GESMBH;FB#123456m;EO#ATEOS9999
012663;SE#9110050065181
ENTERPRISE-SUB-IDSX-Usp-Enterprise-Sub-Ids{\"SID\":[\"1234567064\"],\"KWT\":[\"99037703\
"]}
ENTERPRISE-COUNTRY-CODEX-Usp-Enterprise-Country-CodeAT
ENTERPRISE-ZIPX-Usp-Enterprise-Zip1020
ENTERPRISE-CITYX-Usp-Enterprise-CityTestgemeinde
ENTERPRISE-HOUSE-NUMBERX-Usp-Enterprise-House-
Number
2A-2B
ENTERPRISE-ECONOMIC-ACTIVITY-TYPEX-Usp-Economic-Activity-TypeH
ENTERPRISE-ECONOMIC-ACTIVITY-CODEX-Usp-Economic-Activity-Code62030
ENTERPRISE-ECONOMIC-ACTIVITY-YEARX-Usp-Economic-Activity-Year2025
 X-Pvp-Bindinghttp
ORIG-HOSTX-Pvp-Orig-Hosthttp://xyz.services.usp.gv.at
ORIG-SCHEMEX-Pvp-Orig-Schemehttps
ORIG-URIX-Pvp-Orig-Uri/at.gv.brz.xyz-p/startseite
 X-Forwarded-For10.10.12.12
 X-Forwarded-Hosthttp://xyz.services.usp.gv.at
 X-Forwarded-Port443
 X-Forwarded-Prefix/at.gv.brz.xyz-p
 X-Forwarded-Protohttps

Security und Web Application Firewall

R-Verfahren im USP werden durch eine Web Application Firewall (WAF) geschützt. Diese prüft eingehende Anfragen und blockiert Angriffe, bevor sie das Backend erreichen. Damit eine Anbindung mittels R-Profil erfolgreich möglich ist, muss das Verfahren mit den aktuellen Web-Sicherheitsrichtlinien kompatibel sein. Insbesondere sind Schutzmaßnahmen gegen SQL-Injection, Command-Injection und Cross-Site-Scripting erforderlich.

Die folgenden Compliance-Regeln müssen jedenfalls eingehalten werden:

AngriffSchutzmaßnahmen
SQL-Injection
  • Form-Parameter müssen korrekt URL-encodiert werden
  • SQL-Keywords sind in Form- und Query-Parametern, Cookies und Headern zu vermeiden
  • Sonderzeichen (', ", %, _, ;, --, /*) vermeiden
  • Komplexe freie Texte sind bei Übermittlung base64-kodiert werden
  • Konsistente Content-Typen verwenden

Falls diese Maßnahmen nicht implementiert werden können, können in Abstimmung mit dem USP Entwicklungs-Team engmaschige Relaxation Rules konfiguriert werden.

Command-Injection
  • Form-Parameter müssen korrekt URL-encodiert werden
  • Shell- und OS-Befehle in Parametern, Headern und Cookies vermeiden
  • Sonderzeichen (|, ;, &, $, >, <, ', \, !) vermeiden
  • Konsistente Content-Typen verwenden
Cross-Site-Scripting
  • Felder, die reinen Text erwarten, dürfen keine HTML-Fragmente liefern (z.B. kein < in Freitexten)
  • Skript-ähnliche Sequenzen in Query-Strings vermeiden
  • JSON bevorzugen und richtig kennzeichnen: Daten-API's nach Möglichkeit JSON statt HTML
  • Output-Encoding richtig setzen
  • Content-Security-Policy aktivieren
  • Keine Inline-Skripte oder Inline-Event-Handler ohne Nonce/Hash; keine javascript:-Links
  • X-Content-Type-Options: nosniff, X‑XSS‑Protection: 0, korrekte Content-Type überall
  • Cookies mit HttpOnly, Secure, SameSite (App‑seitig)
Buffer Overflow / DoS
  • Maximale Cookie-Länge: 16.384 Zeichen
  • Maximale Header-Länge: 20.480 Zeichen
  • Maximale URL-Länge: 16.384 Zeichen
  • Regeln für JSON
    • Maximale Verschachtelung / Tiefe: 10
    • Maximale Größe insgesamt: 20.000.000 Zeichen
    • Maximale Array-Einträge: 10.000
    • Maximale Keys: 10.000