{
    "componentChunkName": "component---src-templates-plugin-docs-tsx",
    "path": "/plugins/scm-oauth2-plugin/docs/latest/COMPLIANCE_BERICHT/",
    "result": {"data":{"plugin":{"name":"scm-oauth2-plugin","displayName":"OAuth2/OIDC","description":"Authentication for SCM-Manager using OAuth2/OIDC","author":"Thorsten Ludewig","documentation":[{"version":"1.0.x","languages":["DATENSCHUTZ_FOLGEABSCHAETZUNG","PROZESS_BESCHREIBUNG","COMPLIANCE_BERICHT","SOURCECODE_STATISTIK","javadoc"]}]},"navigation":{"nodes":[]},"versions":{"group":[{"fieldValue":"1.0.x"}]},"languages":{"group":[{"fieldValue":"COMPLIANCE_BERICHT"},{"fieldValue":"DATENSCHUTZ_FOLGEABSCHAETZUNG"},{"fieldValue":"PROZESS_BESCHREIBUNG"},{"fieldValue":"SOURCECODE_STATISTIK"},{"fieldValue":"javadoc"}]},"markdownRemark":{"html":"<h1 id=\"compliance-bericht--scm-oauth2-plugin\" style=\"position:relative;\"><a href=\"#compliance-bericht--scm-oauth2-plugin\" aria-label=\"compliance bericht  scm oauth2 plugin permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Compliance-Bericht — scm-oauth2-plugin</h1>\n<p><strong>Dokumentversion:</strong> 1.1 · <strong>Stand:</strong> 17.08.2026 · <strong>Softwarestand:</strong> scm-oauth2-plugin 1.0.2\n<strong>Prüfgegenstand:</strong> Quellcode und Konfigurationsverhalten des Plugins\n<strong>Prüfmaßstab:</strong> DSGVO (VO (EU) 2016/679) und NIS2-Richtlinie (RL (EU) 2022/2555)</p>\n<blockquote>\n<p><strong>Geltungsbereich und Grenzen:</strong> Geprüft wurde die Software. Ob eine Instanz insgesamt konform\nbetrieben wird, hängt zusätzlich von Konfiguration, IdP, Betriebsumgebung und organisatorischen\nFestlegungen des Betreibers ab. Dieser Bericht ersetzt keine Rechtsberatung und keine Prüfung\ndurch die zuständige Datenschutzaufsicht.</p>\n</blockquote>\n<h2 id=\"1-zusammenfassung\" style=\"position:relative;\"><a href=\"#1-zusammenfassung\" aria-label=\"1 zusammenfassung permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Zusammenfassung</h2>\n<p>Das Plugin verarbeitet ausschließlich die für Authentifizierung und Zugriffssteuerung\nerforderlichen Identitätsdaten, hält keine Tokens dauerhaft vor und überträgt Daten\nausschließlich an den vom Betreiber konfigurierten Identity Provider. Datenschutzrechtlich\nrelevante Schutzmaßnahmen sind im Code umgesetzt und durch 185 automatisierte Tests abgedeckt.</p>\n<p><strong>Gesamteinschätzung:</strong> Aus Sicht der Softwareprüfung stehen der konformen Nutzung keine\nstrukturellen Mängel entgegen. Es verbleiben <strong>zwei Befunde</strong>, beide mit Handlungsbedarf beim\nVerantwortlichen (B-01, B-03), sowie <strong>drei Restrisiken</strong>, die durch Konfiguration bzw.\nBetriebsvorgaben zu behandeln sind.</p>\n<p><strong>Erledigt gegenüber Version 1.0 dieses Berichts:</strong> B-02 (E-Mail-Adresse im Protokoll) sowie die\nRestrisiken R-01 und R-02 — ID Token und Access Token werden jetzt kryptografisch geprüft\n(Abschnitt 2.4, Maßnahmen M-16 bis M-19).</p>\n<table>\n<thead>\n<tr>\n<th>Kategorie</th>\n<th>Anzahl</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Umgesetzte technische Maßnahmen (Art. 32 DSGVO / Art. 21 NIS2)</td>\n<td>19</td>\n</tr>\n<tr>\n<td>Befunde mit Handlungsbedarf</td>\n<td>2</td>\n</tr>\n<tr>\n<td>Dokumentierte Restrisiken</td>\n<td>3</td>\n</tr>\n<tr>\n<td>Automatisierte Tests, davon fehlgeschlagen</td>\n<td>185 / 0</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"2-prüfung-nach-dsgvo\" style=\"position:relative;\"><a href=\"#2-pr%C3%BCfung-nach-dsgvo\" aria-label=\"2 prüfung nach dsgvo permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. Prüfung nach DSGVO</h2>\n<h3 id=\"21-grundsätze-art-5\" style=\"position:relative;\"><a href=\"#21-grunds%C3%A4tze-art-5\" aria-label=\"21 grundsätze art 5 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2.1 Grundsätze, Art. 5</h3>\n<table>\n<thead>\n<tr>\n<th>Grundsatz</th>\n<th>Bewertung</th>\n<th>Nachweis im Code</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Rechtmäßigkeit, Art. 5 Abs. 1 lit. a</td>\n<td><strong>offen beim Verantwortlichen</strong> — die Rechtsgrundlage (regelmäßig Art. 6 Abs. 1 lit. b/f, im Beschäftigungsverhältnis ggf. § 26 BDSG) ist instanzabhängig</td>\n<td>—</td>\n</tr>\n<tr>\n<td>Zweckbindung, lit. b</td>\n<td>erfüllt: die gelesenen Claims werden ausschließlich für Kontoführung und Zugriffssteuerung verwendet</td>\n<td><code class=\"language-text\">UserInfoMapper</code>, <code class=\"language-text\">AuthenticationInfoBuilder</code></td>\n</tr>\n<tr>\n<td>Datenminimierung, lit. c</td>\n<td><strong>teilweise</strong> — nur die konfigurierten Claims werden gelesen, Tokens nicht gespeichert; der Gruppen-Claim wird jedoch unverändert vollständig übernommen → Befund <strong>B-03</strong></td>\n<td><code class=\"language-text\">UserInfoMapper</code>, <code class=\"language-text\">GroupStore</code></td>\n</tr>\n<tr>\n<td>Richtigkeit, lit. d</td>\n<td>erfüllt: Anzeigename, E-Mail und Gruppen werden bei jeder Anmeldung aus der führenden Quelle aktualisiert</td>\n<td><code class=\"language-text\">UserMigration</code>, <code class=\"language-text\">GroupSynchronizer</code></td>\n</tr>\n<tr>\n<td>Speicherbegrenzung, lit. e</td>\n<td><strong>teilweise</strong> — flüchtige Speicher mit 10 min / 12 h Frist; die Gruppendatei je Benutzer wird bei Kontolöschung nicht entfernt → Befund <strong>B-01</strong></td>\n<td><code class=\"language-text\">StateStore</code>, <code class=\"language-text\">IdTokenStore</code>, <code class=\"language-text\">GroupStore</code></td>\n</tr>\n<tr>\n<td>Integrität und Vertraulichkeit, lit. f</td>\n<td>erfüllt, siehe Abschnitt 2.4; die Identitätsdaten werden nur aus kryptografisch geprüften Tokens übernommen</td>\n<td>mehrere, u. a. <code class=\"language-text\">TokenVerifier</code></td>\n</tr>\n<tr>\n<td>Rechenschaftspflicht, Abs. 2</td>\n<td>unterstützt durch <a href=\"/66f566365a7b7d96ac97a1fc2225bcc5/PROZESS_BESCHREIBUNG.md\">Prozessbeschreibung</a>, diesen Bericht und die <a href=\"/2b8b96ac9620994e713b5a4607d53444/DATENSCHUTZ_FOLGEABSCHAETZUNG.md\">DSFA</a></td>\n<td>—</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"22-datenschutz-durch-technikgestaltung-art-25\" style=\"position:relative;\"><a href=\"#22-datenschutz-durch-technikgestaltung-art-25\" aria-label=\"22 datenschutz durch technikgestaltung art 25 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2.2 Datenschutz durch Technikgestaltung, Art. 25</h3>\n<table>\n<thead>\n<tr>\n<th>Maßnahme</th>\n<th>Umsetzung</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Voreinstellungen datenschutzfreundlich</td>\n<td>Plugin ist nach Installation <strong>deaktiviert</strong> (<code class=\"language-text\">enabled = false</code>); <code class=\"language-text\">forceLogin</code>, <code class=\"language-text\">ssoLogout</code>, <code class=\"language-text\">importRealmRoles</code> und <code class=\"language-text\">migrateLocalUsers</code> sind standardmäßig aus</td>\n</tr>\n<tr>\n<td>Übernahme lokaler Konten nur nach ausdrücklicher Freigabe</td>\n<td><code class=\"language-text\">UserMigration</code> verweigert die Anmeldung, wenn ein Konto mit lokalem Passwort existiert, solange <code class=\"language-text\">migrateLocalUsers</code> nicht gesetzt ist</td>\n</tr>\n<tr>\n<td>Keine Tokenhaltung über das Notwendige hinaus</td>\n<td>Access Token wird nicht gespeichert; ID Token nur im Arbeitsspeicher und nur bis zur Abmeldung</td>\n</tr>\n<tr>\n<td>Keine Datenweitergabe an den Hersteller</td>\n<td>keine Telemetrie, keine ausgehenden Verbindungen außer zum konfigurierten IdP</td>\n</tr>\n<tr>\n<td>Zweckgebundene Speicherstruktur</td>\n<td>eine Datei je Benutzer, ausschließlich mit Gruppennamen — gezielt löschbar</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"23-verzeichnis-von-verarbeitungstätigkeiten-art-30\" style=\"position:relative;\"><a href=\"#23-verzeichnis-von-verarbeitungst%C3%A4tigkeiten-art-30\" aria-label=\"23 verzeichnis von verarbeitungstätigkeiten art 30 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2.3 Verzeichnis von Verarbeitungstätigkeiten, Art. 30</h3>\n<p>Die für einen Eintrag erforderlichen technischen Angaben liefert die\n<a href=\"/66f566365a7b7d96ac97a1fc2225bcc5/PROZESS_BESCHREIBUNG.md\">Prozessbeschreibung</a>: Zwecke (Abschnitt 2), Kategorien betroffener\nPersonen und Daten (3), Empfänger (12), Speicherfristen (10), technische Maßnahmen (siehe unten).\nZu ergänzen sind durch den Verantwortlichen: Name und Kontakt des Verantwortlichen und des\nDatenschutzbeauftragten, Rechtsgrundlage, ggf. Drittlandbezug des IdP.</p>\n<h3 id=\"24-sicherheit-der-verarbeitung-art-32\" style=\"position:relative;\"><a href=\"#24-sicherheit-der-verarbeitung-art-32\" aria-label=\"24 sicherheit der verarbeitung art 32 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2.4 Sicherheit der Verarbeitung, Art. 32</h3>\n<table>\n<thead>\n<tr>\n<th>Nr.</th>\n<th>Maßnahme</th>\n<th>Umsetzung im Code</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>M-01</td>\n<td>Authorization Code Flow mit vertraulichem Client; kein Token im Browser-Umlauf</td>\n<td><code class=\"language-text\">OAuth2AuthenticationResource</code>, <code class=\"language-text\">OAuth2RestClient</code></td>\n</tr>\n<tr>\n<td>M-02</td>\n<td>PKCE (S256, RFC 7636); Verifier verlässt den Server nicht</td>\n<td><code class=\"language-text\">Pkce</code>, <code class=\"language-text\">StateStore</code></td>\n</tr>\n<tr>\n<td>M-03</td>\n<td><code class=\"language-text\">state</code> als CSRF-Schutz, 24 Byte aus <code class=\"language-text\">SecureRandom</code>, <strong>einmalig einlösbar</strong></td>\n<td><code class=\"language-text\">StateStore</code></td>\n</tr>\n<tr>\n<td>M-04</td>\n<td>Bindung des <code class=\"language-text\">state</code> an den Browser über <code class=\"language-text\">HttpOnly</code>-Cookie; zeitkonstanter Vergleich — verhindert Login-CSRF (RFC 9700 Abschn. 4.7)</td>\n<td><code class=\"language-text\">StateCookie</code>, <code class=\"language-text\">MessageDigest.isEqual</code></td>\n</tr>\n<tr>\n<td>M-05</td>\n<td>Cookie-Attribute: <code class=\"language-text\">HttpOnly</code>, <code class=\"language-text\">SameSite=Lax</code>, <code class=\"language-text\">Secure</code> bei HTTPS, Pfad auf den Kontextpfad begrenzt</td>\n<td><code class=\"language-text\">StateCookie</code></td>\n</tr>\n<tr>\n<td>M-06</td>\n<td>Begrenzung offener Anmeldevorgänge auf 10.000 mit Verdrängung der ältesten — begrenzt Speichererschöpfung über den anonymen Endpunkt</td>\n<td><code class=\"language-text\">StateStore</code></td>\n</tr>\n<tr>\n<td>M-07</td>\n<td>Umleitungsziele nur instanzintern; abgewiesen werden fehlende, protokollrelative (<code class=\"language-text\">//host</code>), <code class=\"language-text\">/\\</code>-präfixierte sowie CR/LF-behaftete Werte</td>\n<td><code class=\"language-text\">OAuth2AuthenticationResource.sanitizeRedirect</code></td>\n</tr>\n<tr>\n<td>M-08</td>\n<td>Keine Rückgabe von IdP-Meldungen oder internen Fehlertexten an den Browser (statische 401-Texte)</td>\n<td><code class=\"language-text\">OAuth2AuthenticationResource.unauthorized</code></td>\n</tr>\n<tr>\n<td>M-09</td>\n<td>Client-Secret verschlüsselt gespeichert, von der API nie ausgeliefert, leere Eingabe erhält den Bestand</td>\n<td><code class=\"language-text\">OAuth2Configuration</code>, <code class=\"language-text\">ConfigurationResource</code></td>\n</tr>\n<tr>\n<td>M-10</td>\n<td>Endpunkt-URLs auf absolute <code class=\"language-text\">http</code>/<code class=\"language-text\">https</code>-URLs mit Host beschränkt — begrenzt SSRF-Fläche des Schreibrechts</td>\n<td><code class=\"language-text\">ConfigurationResource.isHttpUrl</code></td>\n</tr>\n<tr>\n<td>M-11</td>\n<td>TLS-Zertifikatsprüfung aktiv; Abschaltung ausschließlich in der Entwicklungs-Stage</td>\n<td><code class=\"language-text\">OAuth2RestClient</code>, <code class=\"language-text\">DiscoveryClient</code></td>\n</tr>\n<tr>\n<td>M-12</td>\n<td>Erzwungene Anmeldung nur mit <strong>signaturgeprüftem</strong> Access-Token-Cookie umgehbar</td>\n<td><code class=\"language-text\">ForceOAuth2LoginFilter</code></td>\n</tr>\n<tr>\n<td>M-13</td>\n<td>Rechteänderungen nur über die Kern-API mit erweiterten Rechten, begrenzt auf die Einzelberechtigung <code class=\"language-text\">*</code> des betroffenen Benutzers</td>\n<td><code class=\"language-text\">AdminGroupSynchronizer</code></td>\n</tr>\n<tr>\n<td>M-14</td>\n<td>Gruppennamen werden normalisiert statt ungeprüft übernommen; identische Namen kollabieren</td>\n<td><code class=\"language-text\">GroupNameSanitizer</code></td>\n</tr>\n<tr>\n<td>M-15</td>\n<td>Keine Protokollierung von Tokens, <code class=\"language-text\">code</code>, <code class=\"language-text\">state</code>, Verifier oder Secret; keine personenbezogenen Inhalte über die Benutzerkennung hinaus</td>\n<td>durchgängig, <code class=\"language-text\">UserInfoMapper</code></td>\n</tr>\n<tr>\n<td>M-16</td>\n<td><strong>Signaturprüfung des ID Tokens</strong> gegen den JSON Web Key Set des IdP (RS/PS/ES-Familie) bzw. gegen das Client-Secret (HS-Familie); ein vorhandenes, aber ungültiges Token bricht die Anmeldung ab</td>\n<td><code class=\"language-text\">TokenVerifier</code>, <code class=\"language-text\">Jws</code>, <code class=\"language-text\">JwsAlgorithm</code>, <code class=\"language-text\">JwksClient</code>, <code class=\"language-text\">JwksProvider</code></td>\n</tr>\n<tr>\n<td>M-17</td>\n<td>Algorithmen-Allowlist: <code class=\"language-text\">alg: none</code> und unbekannte Verfahren werden abgewiesen, der Algorithmus bestimmt den zulässigen Schlüsseltyp (Schutz vor Algorithm Confusion), ein <code class=\"language-text\">crit</code>-Header wird abgewiesen</td>\n<td><code class=\"language-text\">JwsAlgorithm</code>, <code class=\"language-text\">Jws</code></td>\n</tr>\n<tr>\n<td>M-18</td>\n<td><strong>Nonce</strong> je Anmeldung: wird an den Authorization-Endpunkt gesendet und im ID Token geprüft — bindet das Token an genau diese Anmeldung (OIDC Core 3.1.3.7 (11))</td>\n<td><code class=\"language-text\">StateStore</code>, <code class=\"language-text\">OAuth2AuthenticationResource</code>, <code class=\"language-text\">TokenVerifier</code></td>\n</tr>\n<tr>\n<td>M-19</td>\n<td>Claim-Prüfung: <code class=\"language-text\">iss</code> gegen den Issuer der Discovery, <code class=\"language-text\">aud</code>/<code class=\"language-text\">azp</code> gegen die Client-ID, <code class=\"language-text\">exp</code>/<code class=\"language-text\">nbf</code>/<code class=\"language-text\">iat</code> mit 60 s Toleranz; Rollen werden ausschließlich aus einem geprüften Access Token importiert</td>\n<td><code class=\"language-text\">TokenVerifier</code>, <code class=\"language-text\">AccessTokenRoleReader</code></td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"25-betroffenenrechte-art-1522\" style=\"position:relative;\"><a href=\"#25-betroffenenrechte-art-1522\" aria-label=\"25 betroffenenrechte art 1522 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2.5 Betroffenenrechte, Art. 15–22</h3>\n<table>\n<thead>\n<tr>\n<th>Recht</th>\n<th>Erfüllbarkeit</th>\n<th>Fundstellen der Daten</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Auskunft, Art. 15</td>\n<td>gegeben</td>\n<td>Benutzerkonto (Kern), <code class=\"language-text\">var/data/oauth2Groups/&lt;kennung>.xml</code>, Gruppenmitgliedschaften (Kern), Protokolldateien</td>\n</tr>\n<tr>\n<td>Berichtigung, Art. 16</td>\n<td>über den IdP als führende Quelle; Übernahme mit der nächsten Anmeldung</td>\n<td>—</td>\n</tr>\n<tr>\n<td>Löschung, Art. 17</td>\n<td>gegeben, <strong>jedoch nicht vollständig automatisiert</strong> → Befund <strong>B-01</strong>: die Gruppendatei ist zusätzlich manuell zu entfernen</td>\n<td></td>\n</tr>\n<tr>\n<td>Einschränkung, Art. 18</td>\n<td>organisatorisch: Konto deaktivieren (Kern)</td>\n<td>—</td>\n</tr>\n<tr>\n<td>Datenübertragbarkeit, Art. 20</td>\n<td>regelmäßig nicht anwendbar (keine auf Einwilligung oder Vertrag mit der betroffenen Person gestützte Verarbeitung im Sinne der Norm)</td>\n<td>—</td>\n</tr>\n<tr>\n<td>Automatisierte Entscheidung, Art. 22</td>\n<td>Zuweisung/Entzug von Zugriffsrechten anhand der Gruppenzugehörigkeit; nach hiesiger Einschätzung kein Fall des Art. 22 Abs. 1, da keine Entscheidung mit rechtlicher Wirkung oder ähnlich erheblicher Beeinträchtigung — Bewertung im Einsatzkontext beim Verantwortlichen</td>\n<td><code class=\"language-text\">AdminGroupSynchronizer</code>, <code class=\"language-text\">GroupSynchronizer</code></td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"26-meldung-von-verletzungen-art-3334\" style=\"position:relative;\"><a href=\"#26-meldung-von-verletzungen-art-3334\" aria-label=\"26 meldung von verletzungen art 3334 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2.6 Meldung von Verletzungen, Art. 33/34</h3>\n<p>Das Plugin liefert die für eine Bewertung nötigen Spuren: fehlgeschlagene Anmeldungen und\nabgelehnte Kontoübernahmen auf <code class=\"language-text\">WARN</code>, Rechtezuweisungen und Mitgliedschaftsänderungen auf <code class=\"language-text\">INFO</code>.\nZu beachten: <strong>abgewiesene <code class=\"language-text\">state</code>-Prüfungen</strong> (<code class=\"language-text\">state does not match</code>) sind der Indikator für einen\nLogin-CSRF-Versuch und sollten in die Auswertung aufgenommen werden.</p>\n<h2 id=\"3-prüfung-nach-nis2\" style=\"position:relative;\"><a href=\"#3-pr%C3%BCfung-nach-nis2\" aria-label=\"3 prüfung nach nis2 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. Prüfung nach NIS2</h2>\n<p>Das Plugin ist keine „Einrichtung\" im Sinne der Richtlinie; Adressat der Pflichten ist der\nBetreiber. Die Tabelle weist nach, welchen Beitrag die Software zu den Risikomanagement-Maßnahmen\nnach <strong>Art. 21 Abs. 2</strong> leistet und welche Aufgabe beim Betreiber bleibt.</p>\n<table>\n<thead>\n<tr>\n<th>Lit.</th>\n<th>Maßnahme nach Art. 21 Abs. 2</th>\n<th>Beitrag des Plugins</th>\n<th>Aufgabe des Betreibers</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>a</td>\n<td>Risikoanalyse, Sicherheit für Informationssysteme</td>\n<td>dokumentierte Datenflüsse, Angriffsflächen und Restrisiken (<a href=\"/66f566365a7b7d96ac97a1fc2225bcc5/PROZESS_BESCHREIBUNG.md\">Prozessbeschreibung</a>, Abschnitt 4 dieses Berichts)</td>\n<td>Einordnung in das eigene ISMS</td>\n</tr>\n<tr>\n<td>b</td>\n<td>Bewältigung von Sicherheitsvorfällen</td>\n<td>Protokollierung sicherheitsrelevanter Ereignisse (Abschnitt 2.6)</td>\n<td>Auswertung, Alarmierung, Meldewege nach Art. 23</td>\n</tr>\n<tr>\n<td>c</td>\n<td>Betriebskontinuität, Backup, Krisenmanagement</td>\n<td>zustandsarme Auslegung: nur <code class=\"language-text\">config/oauth2.xml</code> und <code class=\"language-text\">var/data/oauth2Groups/</code> sind sicherungsrelevant; flüchtige Speicher sind nach einem Neustart entbehrlich (Anmeldung wiederholen, Abmeldung ohne Hint)</td>\n<td>Backup dieser Pfade, Wiederanlaufprüfung, Verfügbarkeit des IdP als <strong>Single Point of Failure</strong></td>\n</tr>\n<tr>\n<td>d</td>\n<td>Sicherheit der Lieferkette</td>\n<td><strong>keine eigenen Laufzeitabhängigkeiten</strong> — alle genutzten Bibliotheken stellt der SCM-Manager-Kern bereit; Lizenz AGPL-3.0-only, Quellcode vollständig einsehbar; Build über den offiziellen <code class=\"language-text\">org.scm-manager.smp</code>-Gradle-Plugin</td>\n<td>Bezugsquelle des <code class=\"language-text\">.smp</code> prüfen, Kern aktuell halten, IdP-Anbieter bewerten</td>\n</tr>\n<tr>\n<td>e</td>\n<td>Sicherheit bei Entwicklung und Wartung, Schwachstellenmanagement</td>\n<td>185 automatisierte Tests (0 Fehler), drei durchgeführte Sicherheitsprüfungen mit umgesetzten Maßnahmen, vollständige Quellcodedokumentation, <a href=\"/827c0d00cff80905f727e603ab2c0778/SOURCECODE_STATISTIK.md\">Sourcecode-Statistik</a></td>\n<td>Update-Prozess, Meldeweg für Schwachstellen, Beobachtung des Projekts</td>\n</tr>\n<tr>\n<td>f</td>\n<td>Bewertung der Wirksamkeit</td>\n<td>Tests decken die Schutzmaßnahmen gezielt ab (u. a. <code class=\"language-text\">state</code>-Bindung, gefälschtes Cookie, Umleitung auf Fremdhost, PKCE, Secret-Handhabung sowie 28 Fälle zur Signatur- und Claim-Prüfung gegen echte Schlüsselpaare)</td>\n<td>regelmäßige Wirksamkeitsprüfung, ggf. Penetrationstest</td>\n</tr>\n<tr>\n<td>g</td>\n<td>Cyberhygiene und Schulung</td>\n<td>Administrationsoberfläche mit Hilfetexten zu jedem Feld, ausführliche Betriebsdokumentation in zwei Sprachen</td>\n<td>Schulung der Administratoren</td>\n</tr>\n<tr>\n<td>h</td>\n<td>Kryptografie und Verschlüsselung</td>\n<td>TLS mit Zertifikatsprüfung, PKCE mit SHA-256, <code class=\"language-text\">SecureRandom</code> für <code class=\"language-text\">state</code>, Verifier und Nonce, verschlüsseltes Client-Secret, signaturgeprüfte Access Tokens des Kerns sowie Signatur- und Claim-Prüfung der IdP-Tokens gegen den JWKS-Endpunkt</td>\n<td>TLS-Konfiguration und Zertifikatsverwaltung, Schlüsselmaterial des Kerns</td>\n</tr>\n<tr>\n<td>i</td>\n<td>Personalsicherheit, Zugriffskontrolle, Anlagenverwaltung</td>\n<td>rechtebasierter Zugang zur Konfiguration (<code class=\"language-text\">configuration:read/write:oauth2</code>), zentrale Rechtevergabe über IdP-Gruppen, automatischer Entzug bei Wegfall</td>\n<td>Vergabe des Schreibrechts nach Vier-Augen-Prinzip (siehe <strong>R-04</strong>), Pflege der Gruppen im IdP</td>\n</tr>\n<tr>\n<td>j</td>\n<td>MFA, gesicherte Kommunikation, Notfallkommunikation</td>\n<td>Mehrfaktor-Authentifizierung wird an den IdP delegiert und damit für SCM-Manager wirksam; SSO ist der Zweck der Komponente</td>\n<td>MFA im IdP erzwingen, Notfallzugang ohne SSO vorhalten (siehe <strong>R-05</strong>)</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"meldepflichten-art-23\" style=\"position:relative;\"><a href=\"#meldepflichten-art-23\" aria-label=\"meldepflichten art 23 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Meldepflichten, Art. 23</h3>\n<p>Für die Fristen (Frühwarnung 24 h, Meldung 72 h) sind die in Abschnitt 2.6 genannten Ereignisse die\ntechnische Grundlage. Das Plugin selbst versendet keine Meldungen.</p>\n<h2 id=\"4-befunde-und-maßnahmen\" style=\"position:relative;\"><a href=\"#4-befunde-und-ma%C3%9Fnahmen\" aria-label=\"4 befunde und maßnahmen permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. Befunde und Maßnahmen</h2>\n<table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Befund</th>\n<th>Einstufung</th>\n<th>Maßnahme</th>\n<th>Zuständig</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>B-01</strong></td>\n<td>Bei Löschung eines Benutzerkontos bleibt <code class=\"language-text\">var/data/oauth2Groups/&lt;kennung>.xml</code> bestehen; das Plugin registriert keinen Listener auf Löschereignisse. Der Dateiname ist die Benutzerkennung, der Inhalt sind Gruppenzugehörigkeiten.</td>\n<td>mittel — Art. 5 Abs. 1 lit. e, Art. 17 DSGVO</td>\n<td>kurzfristig: Löschung in den Offboarding-Prozess aufnehmen (Datei entfernen). Mittelfristig: Ereignis-Listener im Plugin ergänzen, der die Datei beim Löschen des Benutzers entfernt.</td>\n<td>Betreiber / Entwicklung</td>\n</tr>\n<tr>\n<td><del><strong>B-02</strong></del></td>\n<td><del><code class=\"language-text\">UserInfoMapper</code> protokolliert bei syntaktisch ungültiger Adresse die E-Mail-Adresse samt Benutzerkennung auf <code class=\"language-text\">INFO</code>.</del></td>\n<td>gering — Datenminimierung in Protokollen</td>\n<td><strong>Erledigt in 1.0.2:</strong> die Adresse wird nicht mehr protokolliert, die Meldung nennt nur noch Benutzerkennung und Länge des Wertes.</td>\n<td>—</td>\n</tr>\n<tr>\n<td><strong>B-03</strong></td>\n<td>Der Gruppen-Claim wird vollständig übernommen. Produktive IdP-Installationen liefern dort häufig auch Organisations-, Beschäftigungs- oder Standortmerkmale, die für SCM-Manager nicht erforderlich sind.</td>\n<td>mittel — Art. 5 Abs. 1 lit. c DSGVO</td>\n<td>Gruppen-/Rollen-Claim im IdP auf die für SCM-Manager benötigten Gruppen beschränken (dedizierter Client-Scope bzw. gefilterter Mapper). Zusätzlich prüfen, ob <code class=\"language-text\">importRealmRoles</code> benötigt wird.</td>\n<td>Betreiber</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"5-dokumentierte-restrisiken\" style=\"position:relative;\"><a href=\"#5-dokumentierte-restrisiken\" aria-label=\"5 dokumentierte restrisiken permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5. Dokumentierte Restrisiken</h2>\n<table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Restrisiko</th>\n<th>Bewertung</th>\n<th>Behandlung</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><del><strong>R-01</strong></del></td>\n<td><del>Das ID Token wird nicht signaturgeprüft, ein <code class=\"language-text\">nonce</code> wird nicht verwendet.</del></td>\n<td><strong>Erledigt in 1.0.2:</strong> Signatur, Issuer, Audience, Laufzeit und Nonce werden geprüft; ein ungültiges Token bricht die Anmeldung ab</td>\n<td>—</td>\n</tr>\n<tr>\n<td><del><strong>R-02</strong></del></td>\n<td><del>Der Payload des Access Tokens wird für den Rollenimport ohne Signaturprüfung gelesen.</del></td>\n<td><strong>Erledigt in 1.0.2:</strong> Rollen werden nur aus einem signatur- und claimgeprüften Access Token importiert; andernfalls keine Rollen</td>\n<td>—</td>\n</tr>\n<tr>\n<td><strong>R-06</strong></td>\n<td>Ohne JWKS-Endpunkt (manuelle Endpunkt-Konfiguration ohne <code class=\"language-text\">jwksUrl</code>) kann kein Token geprüft werden. In diesem Fall wird das ID Token verworfen und es werden keine Rollen aus dem Access Token importiert; der SSO-Logout erfolgt dann ohne <code class=\"language-text\">id_token_hint</code>. Ist ein Schlüsselsatz konfiguriert, aber nicht erreichbar, scheitert die Anmeldung (fail closed) — neue Abhängigkeit der Verfügbarkeit vom JWKS-Endpunkt.</td>\n<td>bewusst gewählt: nicht überprüfbare Daten werden nicht verwendet</td>\n<td>Discovery-URL nutzen oder <code class=\"language-text\">jwksUrl</code> konfigurieren; Erreichbarkeit des JWKS-Endpunkts überwachen (liegt in der Regel auf demselben Host wie der Authorization-Endpunkt); Warnungen des Plugins auswerten</td>\n</tr>\n<tr>\n<td><strong>R-03</strong></td>\n<td>In der Entwicklungs-Stage ist die TLS-Zertifikatsprüfung abgeschaltet.</td>\n<td>im Produktivbetrieb nicht wirksam</td>\n<td>Betriebsvorgabe: Produktivsysteme nie in der Entwicklungs-Stage betreiben</td>\n</tr>\n<tr>\n<td><strong>R-04</strong></td>\n<td>Wer <code class=\"language-text\">configuration:write:oauth2</code> besitzt, kann den IdP umkonfigurieren und damit faktisch Administratorrechte erlangen.</td>\n<td>strukturell, nicht auflösbar</td>\n<td>Recht wie ein Administratorrecht behandeln, restriktiv vergeben, Änderungen protokollieren/reviewen</td>\n</tr>\n<tr>\n<td><strong>R-05</strong></td>\n<td>Vertrauensmodell: Wer Gruppen im IdP pflegen kann, steuert über die Admin-Gruppe die Administratorrechte in SCM-Manager. Fällt der IdP aus, ist bei aktiviertem <code class=\"language-text\">forceLogin</code> keine Anmeldung möglich.</td>\n<td>inhärent für SSO</td>\n<td>Änderungen an der Admin-Gruppe im IdP der Änderungskontrolle unterwerfen; lokales Notfallkonto vorhalten und <code class=\"language-text\">forceLogin</code> bewusst wählen</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"6-nachweise\" style=\"position:relative;\"><a href=\"#6-nachweise\" aria-label=\"6 nachweise permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>6. Nachweise</h2>\n<table>\n<thead>\n<tr>\n<th>Nachweis</th>\n<th>Fundstelle</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Datenflüsse, Speicherorte, Fristen</td>\n<td><a href=\"/66f566365a7b7d96ac97a1fc2225bcc5/PROZESS_BESCHREIBUNG.md\">PROZESS_BESCHREIBUNG.md</a></td>\n</tr>\n<tr>\n<td>Risikobetrachtung für betroffene Personen</td>\n<td><a href=\"/2b8b96ac9620994e713b5a4607d53444/DATENSCHUTZ_FOLGEABSCHAETZUNG.md\">DATENSCHUTZ_FOLGEABSCHAETZUNG.md</a></td>\n</tr>\n<tr>\n<td>Umfang, Testabdeckung, Dokumentationsgrad</td>\n<td><a href=\"/827c0d00cff80905f727e603ab2c0778/SOURCECODE_STATISTIK.md\">SOURCECODE_STATISTIK.md</a></td>\n</tr>\n<tr>\n<td>Sicherheitshinweise für den Betrieb</td>\n<td><a href=\"../README_de.md\">../README_de.md</a>, Abschnitt „Sicherheitshinweise\"</td>\n</tr>\n<tr>\n<td>Änderungsverlauf</td>\n<td><a href=\"../CHANGELOG.md\">../CHANGELOG.md</a></td>\n</tr>\n<tr>\n<td>API-Dokumentation</td>\n<td><a href=\"/5240b5f00bdd6ede243dee6289f87479/index.html\">javadoc/index.html</a></td>\n</tr>\n<tr>\n<td>Testergebnisse</td>\n<td><code class=\"language-text\">./gradlew test</code>, Berichte unter <code class=\"language-text\">build/reports/tests/test/</code></td>\n</tr>\n<tr>\n<td>Wirksamkeitsnachweis der Tokenprüfung (Art. 21 Abs. 2 lit. f NIS2)</td>\n<td>Live-Verifikation am 17.08.2026 gegen die Keycloak-Testinstanz: Anmeldung, Prüfung von ID Token und Access Token (RS256), Rollenimport und RP-initiated Logout mit <code class=\"language-text\">id_token_hint</code> erfolgreich; der Verschlüsselungsschlüssel des Schlüsselsatzes wurde erwartungsgemäß übersprungen. Protokollauszug bei aktivem <code class=\"language-text\">DEBUG</code>-Level</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Nächste Überprüfung:</strong> bei jeder Änderung der verarbeiteten Claims, der Speicherorte oder der\nDatenflüsse, mindestens jedoch bei jedem Minor-Release.</p>","description":"Compliance-Bericht — scm-oauth2-plugin Dokumentversion: 1.1 · Stand: 17.08.2026 · Softwarestand: scm-oauth2-plugin 1.0.2\nPrüfgegenstand: Quellcode und…","tableOfContents":"<ul>\n<li>\n<p><a href=\"#compliance-bericht--scm-oauth2-plugin\">Compliance-Bericht — scm-oauth2-plugin</a></p>\n<ul>\n<li>\n<p><a href=\"#1-zusammenfassung\">1. Zusammenfassung</a></p>\n</li>\n<li>\n<p><a href=\"#2-pr%C3%BCfung-nach-dsgvo\">2. Prüfung nach DSGVO</a></p>\n<ul>\n<li><a href=\"#21-grunds%C3%A4tze-art-5\">2.1 Grundsätze, Art. 5</a></li>\n<li><a href=\"#22-datenschutz-durch-technikgestaltung-art-25\">2.2 Datenschutz durch Technikgestaltung, Art. 25</a></li>\n<li><a href=\"#23-verzeichnis-von-verarbeitungst%C3%A4tigkeiten-art-30\">2.3 Verzeichnis von Verarbeitungstätigkeiten, Art. 30</a></li>\n<li><a href=\"#24-sicherheit-der-verarbeitung-art-32\">2.4 Sicherheit der Verarbeitung, Art. 32</a></li>\n<li><a href=\"#25-betroffenenrechte-art-1522\">2.5 Betroffenenrechte, Art. 15–22</a></li>\n<li><a href=\"#26-meldung-von-verletzungen-art-3334\">2.6 Meldung von Verletzungen, Art. 33/34</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"#3-pr%C3%BCfung-nach-nis2\">3. Prüfung nach NIS2</a></p>\n<ul>\n<li><a href=\"#meldepflichten-art-23\">Meldepflichten, Art. 23</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"#4-befunde-und-ma%C3%9Fnahmen\">4. Befunde und Maßnahmen</a></p>\n</li>\n<li>\n<p><a href=\"#5-dokumentierte-restrisiken\">5. Dokumentierte Restrisiken</a></p>\n</li>\n<li>\n<p><a href=\"#6-nachweise\">6. Nachweise</a></p>\n</li>\n</ul>\n</li>\n</ul>","frontmatter":{"title":"","subtitle":null,"description":null,"keywords":null,"displayToc":null,"image":null}}},"pageContext":{"name":"scm-oauth2-plugin","slug":"/plugins/scm-oauth2-plugin/docs/1.0.x/COMPLIANCE_BERICHT/","version":"1.0.x","latestVersion":"1.0.x","latestPageVersion":"1.0.x","language":"COMPLIANCE_BERICHT","canonicalPath":"/plugins/scm-oauth2-plugin/docs/latest/COMPLIANCE_BERICHT/","latestRootPath":"/plugins/scm-oauth2-plugin/docs/1.0.x/COMPLIANCE_BERICHT/"}},
    "staticQueryHashes": ["1973669194","2742214048","2956773653","2957019495","698804963"]}