Christoph hat die Praemisse am 2026-10-06 selbst widerlegt: testus@emsenhuber.com wird von CF Access abgelehnt. Die E-Mail-Bindung der Policy gilt, login_method hebelt sie nicht aus. Es gab nie eine offene Tuer. Der Fehler war ein Fehlschluss, kein Raten: Doku-Semantik zu login_method ("welche Methode wurde benutzt") wurde so gelesen, als ersetze der Include die danebenstehende email-Zeile. include ist ein OR — die Zeilen sind Alternativen, nicht Bedingungen. Aus "GitHub ist eine Alternative zur E-Mail" wurde "GitHub allein genuegt", und das stand als Tatsache in der Akte (Fund 2026-07-10). Belegt: kein IdP traegt eine Domain-Bindung (github/google/onetimepin alle nur client_id + redirect_url, live per GET .../identity_providers). Die Einschraenkung kann also nur aus der Policy kommen — und sie greift nachweislich. Grenze der Aussage: der GitHub-Pfad selbst wurde nicht gemessen, nur geschlossen. Korrigiert: teilprojekte.md TP49 (Herkunft des Fehlers mitgenannt), cf-tunnel- mapping.md Paragraf 10 (Ursprungsfund widerlegt, nicht geloescht), Startauftrag als "NICHT AUSFUEHREN" markiert. Kein Schreibzugriff auf die Terpenfinder-Policy; blauebluethen-Projektgrenze gewahrt. Erhalten bleiben nur die Gotchas: 32-Hex-App-IDs, cloudflare-MCP ist read-only (Write-Probe no-op-PUT -> 1010), Reusable Policy nur per App-PUT detachbar. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
62 lines
3.1 KiB
Markdown
62 lines
3.1 KiB
Markdown
# Startauftrag — TP49: CF-Access `login_method`-Include entfernen ❌ NICHT AUSFÜHREN — gegenstandslos
|
|
|
|
> **Geschlossen am 2026-10-06.** Gitea #76, Prosa in `docs/teilprojekte.md` → `### TP49`.
|
|
>
|
|
> 🔴 **Dieser Auftrag ist ungültig. Er basiert auf einer falschen Prämisse, die am 2026-10-06
|
|
> widerlegt wurde. Nicht ausführen.** Die Datei bleibt als Beleg stehen, damit die Prämisse
|
|
> nicht in einer künftigen Session wieder als Auftrag auftaucht.
|
|
|
|
## Warum gegenstandslos
|
|
|
|
Der Auftrag verlangte, `login_method:github` aus der Policy `christoph` der App
|
|
`420.teilzeitladen.xyz` zu entfernen, weil **„ein beliebiger GitHub-Account"** hineinkäme.
|
|
|
|
**Das ist falsch.** Christoph hat am 2026-10-06 mit `testus@emsenhuber.com` getestet:
|
|
die Adresse wurde **abgelehnt**. Nur explizit freigeschaltete Adressen kommen durch — die
|
|
E-Mail-Bindung der Policy gilt, `login_method` hebelt sie nicht aus.
|
|
|
|
## Wie der Fehler entstand
|
|
|
|
Die Doku-Aussage zu `login_method` („asks which identity service was used for authentication")
|
|
wurde so gelesen, als **ersetze** der Include die danebenstehende `email`-Zeile.
|
|
`include` ist ein **OR** — die Zeilen sind Alternativen, nicht Bedingungen. Aus
|
|
„GitHub ist eine Alternative zur E-Mail" wurde fälschlich „GitHub allein genügt".
|
|
**Belegt war das nie**; es stand trotzdem als Tatsache in Auftrag und Prosa-Abschnitt.
|
|
|
|
## Belegte Gegenlage (live geprüft 2026-10-06)
|
|
|
|
| IdP | Typ | `config` |
|
|
|---|---|---|
|
|
| `72c1291b…` | github | `client_id`, `redirect_url` — **kein** Domain-Filter |
|
|
| `c7571880…` | google | `client_id`, `redirect_url` — **kein** Domain-Filter |
|
|
| `9024c7a6…` | onetimepin | `redirect_url` |
|
|
|
|
**Kein** IdP trägt eine Domain-/Tenant-Bindung (`GET /accounts/{id}/access/identity_providers`).
|
|
Die Einschränkung kann also **nur** aus der Policy kommen — und sie greift nachweislich.
|
|
Google ist auf GitHub übertragbar, weil beide IdPs konfigurationsgleich sind.
|
|
|
|
⚠️ **Grenze:** der GitHub-Pfad wurde **nicht** separat gemessen. Die Aussage ist
|
|
„Google→GitHub geschlossen", nicht „GitHub getestet". Das ist der einzige Grund, den Eintrag
|
|
nicht als bewiesen sauber zu führen — **kein** Grund für eine Änderung.
|
|
|
|
## Ergebnis
|
|
|
|
**Kein Schreibzugriff auf die Terpenfinder-Policy ist erfolgt.** `420.teilzeitladen.xyz`
|
|
gehört zum Projekt **blaueblüten**; es wurde nichts angefasst.
|
|
|
|
## Was aus diesem TP erhalten bleibt
|
|
|
|
Nur die **Gotchas** — sie sind unabhängig vom widerlegten Fund und live bestätigt:
|
|
|
|
1. **Access-App-IDs sind 32 Hex.** Kurzform `16aaec78` → `12045 invalid_application_id`.
|
|
2. 🔴 **Der `cloudflare`-MCP ist strikt read-only.** Write-Probe 2026-10-06: no-op-PUT
|
|
(byte-identischer Body) → **`1010: undefined`**. Writes nur via `CF_API_TOKEN`/curl.
|
|
3. **Reusable Policy** nur per **App-PUT** detachbar (`policies:[{id,precedence}]`),
|
|
nicht per `/policies`-DELETE.
|
|
|
|
## Lehre
|
|
|
|
**Eine Sicherheitsaussage über fremde Infrastruktur braucht einen Test, nicht eine Ableitung.**
|
|
Der Befund stand fünf Tage (2026-07-10 → 2026-10-06) als „🔴 ABSOLUTE PRIORITÄT" in der Akte,
|
|
gestützt allein auf einen Lese-Schluss. Der Test dauerte zwei Minuten.
|