Blog

August 3, 2026

2012 trat der Mann zurück, der bei OAuth 2.0 die Feder führte. Seine Begründung liest sich wie eine Prognose.

Single Sign-on ist seit über zwanzig Jahren ein etablierter Standard, und doch ist SAML noch immer der Posten, der einen Abschluss ins Stocken bringt oder einen Anruf beim Vertrieb auslöst. Wie Enterprise-Authentifizierung zum teuren Upsell wurde, wer diese Welt gebaut und wer uns davor gewarnt hat, wie breit der Burggraben wirklich ist und woraus er besteht, und die eine Kraft, die die Hälfte davon still und leise abträgt.

July 31, 2026

Wir haben bewiesen, dass jeder Alarm auslösen kann. Die meisten konnten es nicht.

Monitoring läuft nur während einer Katastrophe. Wir haben ein Prüfgerüst gebaut, das für jede Alarmregel ein echtes Signal auslöst und nur dann durchgeht, wenn die Benachrichtigung physisch in einem Auffang-Relais eintrifft. Der erste Lauf fand unseren wichtigsten Fehlerraten-Alarm mausetot, dann noch Schlimmeres: eine Aufbewahrungseinstellung hatte unsere Logs still auf sofortiges Ablaufen gesetzt, sodass eine ganze Klasse von Alarmen über nichts auswertete.

July 30, 2026

Wir haben unsere Bilder auf ein CDN verlagert, und der Ursprungsserver lieferte sie weiter aus

Hundert Megabyte an Dokumentations-Screenshots wanderten zu Cloudflare R2, hinter eine CDN-Basis, die die App zur Laufzeit aus dem Host ableitet. Im Browser lief alles, doch der Traffic des Ursprungsservers blieb gleich: Die Seiten, die ein Crawler sieht, werden auf 127.0.0.1 vorgerendert, wo ein Hostname nichts verrät. Die Lösung: ein Platzhalter, den das HTML aus dem Build trägt und den der Edge pro Anfrage füllt, erzwungen von einem schreibgeschützten Dateisystem.

July 29, 2026

Wir haben eine gefährliche Standardeinstellung abgeschaltet, ohne eine einzige Zeile zu migrieren

Just-in-Time-Provisionierung war standardmäßig aktiviert, sodass ein föderierter Identitätsanbieter Konten im Tenant eines Kunden anlegen konnte, indem er jemandes Existenz behauptete. Diese Voreinstellung abzuschalten ist eine Änderung von einem Wort. Sie abzuschalten, ohne stillschweigend das Verhalten jeder gespeicherten Verbindung zu ändern, die nie die Spalte geschrieben hat, ist das wahre Problem, und der Kniff dahinter zeigt, warum ein Standard API-Oberfläche ist.

July 28, 2026

Ein BFF für viele Mandanten, und die eine Anfrage, die ohne Cookie eintrifft

Ein Backend-for-Frontend holt die OAuth-Tokens aus dem Browser und lässt diesem nichts als ein undurchsichtiges Cookie. Viele Mandanten aus einem einzigen BFF zu bedienen ist größtenteils ein reines Verdrahtungsproblem, bis der Back-Channel-Logout auftaucht: ein Server-zu-Server-POST ohne Cookie, ohne Session und ohne Browser, bei dem das Einzige, was den Mandanten ausweist, ein Claim in einem Token ist, das man noch gar nicht verifiziert hat.

July 27, 2026

Der Admission-Webhook, der Ja sagte und uns trotzdem lahmlegte

Wir haben unserem Kubernetes-Cluster einen Admission-Webhook hinzugefügt, der Signaturen prüft, damit unsignierte Images niemals laufen können. Stunden später hatte ein Deployment 2.242 ReplicaSets, alle drei Sekunden ein neues, und keinen einzigen verfügbaren Pod. Die Webhook-Logs zeigten, dass er jede einzelne Anfrage zuließ. Der Schaden kam von dem einen Wort in "mutating admission webhook", das wir nicht mehr gelesen hatten.

July 23, 2026

Unser Login hing exakt 10 Sekunden lang. Unsere eigenen Security-Header waren schuld.

Ein wiederkehrender Nutzer sah „Loading…" jedes Mal exakt zehn Sekunden lang, bevor der Login erschien. Die runde Zahl war der Hinweis: Unsere SSO-Bibliothek öffnete ein verstecktes Silent-Renew-iframe gegen einen Auth-Host, der X-Frame-Options: DENY und frame-ancestors 'none' auslieferte, sodass das Frame nie lud, nie einen Fehler warf und die Bibliothek ihren vollen Timeout abwartete. Clickjacking-Abwehr und OIDC-Silent-Renew, jeweils korrekt, hingen in der Naht zwischen ihnen.

July 22, 2026

HMAC hat mein Autocomplete gefressen: Type-ahead-Suche über verschlüsselte E-Mail-Adressen

Wir haben jede E-Mail-Adresse at rest verschlüsselt, und das Admin-Suchfeld hörte stillschweigend auf zu autocompleten: kein Fehler, keine Logzeile. Ein Blind Index stellt Exact-Match-Lookups über Ciphertext wieder her, aber HMACs Aufgabe ist es, genau die Ordnung zu zerstören, die Präfixsuche braucht. Hier ist das Design, das Type-ahead zurückbrachte, plus die drei Fallen, die zeigten: Searchable Encryption ist ein Systemproblem, kein Kryptoproblem.

July 20, 2026

Eine ES256-Migration, drei Wege, eine gültige Signatur zu verstümmeln

Wir haben das JWT-Signieren von RS256 auf ES256 umgestellt, und jedes Token, das wir prägten, war kryptographisch gültig und wurde trotzdem abgelehnt. Dreimal, aus drei verschiedenen Gründen: DER, wo JWS rohes R‖S will, Integer-Padding, das bei einem von 128 Tokens versagt, und ein base64-Dialekt, der sich unter unseren Füßen änderte. Hier steht, wie man die verstümmelten Bytes liest und die schuldige Schicht allein an der Länge der Signatur erkennt.

July 20, 2026

Jede Token-Validierung traf unseren Origin. Jetzt lebt das JWKS am Edge.

Die beiden Dokumente, die ein Dienst liest, um eines unserer JWTs zu validieren – das Discovery-Dokument und das JWKS – sind das Meistabgefragte und zugleich am wenigsten Geheime, das wir ausliefern, und früher kam jeder Abruf den ganzen Weg bis zum Origin zurück. Sie auf Cloudflare zu cachen, war der leichte Teil.

July 18, 2026

Die günstigste Duende IdentityServer-Lizenz kann kein SAML

Die LITE-Stufe von Duende kostet $5,750/yr, ist aber auf 2 Client-Apps begrenzt und bringt überhaupt kein SAML mit. Sobald Sie Enterprise-SSO oder eine dritte App brauchen, landen Sie bei STANDARD für $12,500. Ein Blick darauf, was Duende ein echtes Produkt tatsächlich kostet, und auf die Client-Anzahl-Steuer, vor der Sie niemand warnt.

July 17, 2026

Die drei Leben meines JWT-Signaturschlüssels

Ein einziger privater Schlüssel signiert jedes Token, das unser Auth-Server ausstellt, und er ist in seinem Leben zweimal umgezogen: geboren im Prozess selbst, verbannt in einen Tresor, den er nicht mehr verlassen kann, und schließlich als eine gänzlich kleinere, schnellere Art von Schlüssel wiedergeboren. Jeder Umzug fand bei einem laufenden Issuer statt, während bereits Tokens unterwegs waren.

July 16, 2026

Die SAML-Signatur war gültig. Das war nie das Problem.

Dein SP hat die Assertion-Signatur validiert, das Zertifikat gepinnt und den Nutzer angemeldet. Jede Prüfung war erfolgreich. Trotzdem habe ich einen Login wiederholt, den ich eine Stunde zuvor mitgeschnitten hatte. Der Trick war nicht, die Signatur zu brechen. Es war, ein Feld zu löschen, das die Signatur nie abgedeckt hat.

July 14, 2026

Wir haben MFA vorgeschrieben. Ein Query-Parameter hat sie abgeschaltet.

Wir haben den zweiten Faktor auf der Login-Seite abgefragt und ihn am Token-Endpoint nie erneut geprüft. Ein gültiges Passwort plus eine von Hand editierte Return-URL marschierte also glatt an der MFA vorbei. Der Fix, und die Regel, die er uns gelehrt hat: MFA ist eine Eigenschaft der Session, die man ausstellt, nicht ein Schritt im Login-Screen.

July 14, 2026

Die SCIM-Steuer: Provisioning ist Infrastruktur, kein Premium-Feature

SCIM ist eine standardisierte CRUD-API, deren wichtigstes Verb dasjenige ist, das das Konto eines ehemaligen Mitarbeiters abschaltet. Anbieter verlangen dafür $125 im Monat pro Verbindung oder parken es im Enterprise-Tarif neben SSO. Hier steht, was eine SCIM-Verbindung im Betrieb tatsächlich kostet, und warum Geld für Deprovisioning zu verlangen bedeutet, Geld für Sicherheit zu verlangen.

July 12, 2026

Ihr Backup lässt gelöschte Benutzer stillschweigend wiederauferstehen

Azure Table Storage und DynamoDB kennen keine Delete-Marker, eine gelöschte Zeile verschwindet also einfach, und das heißt: Ihr inkrementelles Backup sieht die Löschung überhaupt nicht. Stellen Sie dieses Backup wieder her, und der Benutzer, den Sie beim Offboarding entfernt haben, ist zurück, mitsamt dem Passwort, das Sie durch Rotation losgeworden waren. Hier steht, warum Löschungen erstklassige Daten sein müssen, und welche eine Tabelle sie dazu macht.

July 11, 2026

Jede Per-IP-Kontrolle, die wir ausgeliefert haben, ließ sich mit einem Header aushebeln

Unser Rate Limiter und unser Lockout-Zähler hingen an der Client-IP. Hinter nginx kam diese IP aus einem Header, den der Client selbst setzen konnte, also verpasste ein rotierender Header jedem Request eine frische IP, und jede Per-IP-Kontrolle kippte um. Der Einzeiler-Spoof, und der Fix, der auf Kubernetes kniffliger ist, als er aussieht.

July 10, 2026

Wir betreiben ein ganzes Auth-System auf Stores, die nur get und put kennen

Azure Table Storage gibt dir einen Partition Key, einen Row Key und fast nichts anderes. Keine Joins, keine nennenswerten Secondary Indexes, kein Increment. Wir betreiben trotzdem ein mandantenfähiges Auth-System darauf. Die Patterns, die das funktionieren lassen, und was du gegenüber SQL aufgibst.

July 9, 2026

Ihr Passwort-Reset-Formular ist eine kostenlose E-Mail-Kanone

Ein nicht authentifizierter Passwort-Reset-Endpunkt ohne E-Mail-spezifisches Rate Limit ist nicht nur Ihr Problem. Richten Sie ihn auf das Postfach eines anderen, und Sie haben dessen Reset-Formular in eine Spam-Kanone verwandelt, abgerechnet über Ihre Sender-Reputation. Die Lösung, ohne zu verraten, welche E-Mail-Adressen ein Konto haben.

July 7, 2026

Wir haben jedes Feature in den Gratis-Tarif gepackt, auch die, die andere für Enterprise reservieren

Die meisten Auth-Anbieter sperren SSO, SCIM, MFA und Audit-Logs hinter einem Enterprise-Tarif ein. Wir haben alles davon in den $0-Tarif gepackt. Hier ist die Unit Economics, die das Verschenken von Features überlebensfähig macht: Die Mauer waren nie die Features, sondern aktive Nutzer und Support.

July 6, 2026

Ein Identitätsanbieter sagte uns, wer Sie sind, und wir glaubten es

Single Sign-on bedeutet, dem Identitätsanbieter zu vertrauen. Wir haben ihm in einem Punkt zu viel vertraut: Wir haben wiederkehrende föderierte Nutzer anhand der E-Mail aus der Assertion aufgelöst, sodass jede Verbindung die Adresse einer anderen Person behaupten und auf deren Konto landen konnte. Die Lösung war nicht mehr Validierung. Es war die Änderung des Identitäts-Verknüpfungsschlüssels von der E-Mail zu einem anbieterspezifischen Subject, das die behauptende Partei nicht fälschen kann.

July 6, 2026

Scale-to-Zero kann nicht bis eins zählen

Azure Container Apps versprach, dass wir nicht länger für einen untätigen Auth-Cluster bezahlen. Wir haben die Migration durchkalkuliert und sie verworfen, nicht wegen des Preises oder der Cold Starts, sondern weil Serverless genau die eine Zahl fehlt, die eine Auth-Backplane mit Leader-Election wirklich braucht.

July 3, 2026

Die SSO-Steuer, in Dollar: was SAML bei Auth0, WorkOS und Clerk wirklich kostet

Die „Feature-Steuer" als echte Rechnung. Drei Käuferszenarien (erster Enterprise-Deal, eine Handvoll Kunden, SSO als Selbstverständlichkeit) gegen die öffentlichen Preise jedes Anbieters gerechnet. Plus der stille Aufschlag, vor dem niemand warnt: mitten in der Integration die OAuth-Clients ausgehen.

July 1, 2026

Unsere Service Discovery erkannte ihren eigenen Ausfall und schaltete sich selbst ab

Ein Cluster mit drei Replikaten war ständig uneins mit sich selbst. Die Ursache lag in unserem eigenen Code: Die Peer-Discovery-Routine hatte einen catch-Block, der die Discovery deaktivierte, sobald multicast fehlschlug, und auf gemanagtem Kubernetes schlägt multicast immer fehl. Warum wir gossip vollständig entfernten und stattdessen einen Leader per blob lease wählten, und warum eine Mitgliedschaft, die man im Storage Explorer öffnen kann, einer schlägt, die man erschließen muss.

June 30, 2026

Auth selbst bauen oder kaufen: die Rechnung, die Sie nicht kommen sehen

Login ist ein Wochenende. Die Rechnung kommt danach: Signaturprüfung, SCIM-Deprovisionierung, MFA, Audit-Logs, Schlüsselrotation, Haftung bei Datenpannen und Rufbereitschaft für ein Tier-Zero-System. Ein ehrliches Bauen-oder-Kaufen, inklusive der Frage, wann Bauen richtig ist.

June 28, 2026

OIDC oder SAML: welches Sie wirklich brauchen

OIDC oder SAML? Sie haben selten die Wahl. Was jedes Protokoll ist, wann welches gewinnt, die XML-Signatur-Fallstricke, die SAML gefährlich zum Selbstbauen machen, und warum ein B2B-Produkt am Ende beide braucht.

June 26, 2026

Support, der Ihre Sprache spricht. Ohne dass Sie fragen müssen.

Das Support-System von Authagonal: Nachrichten in Echtzeit ohne Neuladen, transparente KI-Übersetzung in beide Richtungen, festgelegt ab der ersten Nachricht des Kunden, und ein Verlauf, der selbst per E-Mail vollständig übersetzt bleibt. Einfach, ansprechend und wirklich leistungsfähig.

June 25, 2026

Ein Bindestrich, zwei Mandanten, ein Signaturschlüssel

Zwei unserer Mandanten waren klammheimlich derselbe Mandant: dieselbe Datenbank, derselbe Schlüssel zur Token-Signatur, unterschiedliche Namen. Die Ursache war eine einzeilige Hilfsfunktion, die Slugs bereinigte, indem sie Bindestriche entfernte, und so aus einem eindeutigen Bezeichner einen nicht eindeutigen machte. Hier lesen Sie, wie eine verlustbehaftete String-Transformation zu einer mandantenübergreifenden Übernahme wurde, und warum wir sie vor Ihnen gefunden haben.

June 23, 2026

Grüne Unit-Tests bedeuten nicht, dass Sie live gehen können

Wir verkaufen Authentifizierung, daher ist unser wichtigster Test einer, der zum Kunden wird: ein einziger Playwright-Durchlauf, der einen Mandanten registriert, jedes Feature konfiguriert, eine echte App darauf ausrichtet, einen echten Nutzer mit den richtigen Claims anmeldet, dann sichert, wiederherstellt und sich selbst löscht. Wie umfassendes Ende-zu-Ende-Testen uns das Vertrauen für den Go-Live verschafft hat.

June 22, 2026

Wir melden uns mit unserem eigenen SAML an unserer eigenen Admin-Konsole an. Das hat es gefangen.

Unsere Mitarbeiterkonsole authentifiziert sich über Authagonal selbst, wobei Entra SSO und SCIM das Provisioning übernehmen. Sein eigener Kunde zu sein bringt die Edge Cases ans Licht, an die keine Testsuite denkt. Hier sind die, die zählten.

June 22, 2026

Holen Sie Ihren Terraform-State aus dem öffentlichen Internet (ohne ein VPN aufzubauen)

Ihr Terraform-State ist eine vollständige Landkarte Ihrer Cloud plus ein Stapel Geheimnisse, und standardmäßig liegt er hinter einem öffentlichen Endpunkt. So haben wir Remote-State von null aus gebootstrappt, ihn hinter einen privaten Endpunkt gelegt und über einen Zero-Trust-Connector erreicht, statt die teure VPN-Gateway-Steuer zu zahlen, ohne uns dabei jemals selbst auszusperren.

June 21, 2026

Nutzer importieren ohne Passwort-Zurücksetzung

"Alle setzen ihr Passwort zurück" ist eine Migrationsentscheidung, kein Naturgesetz. Wie Sie die bestehenden Passwort-Hashes Ihrer Nutzer über einen Wechsel des Identity-Providers hinweg mitnehmen, sodass der Umstieg unsichtbar bleibt, und der eine Fall, in dem es wirklich nicht geht.

June 20, 2026

Die Funktionssteuer: Hören Sie auf, dafür zu zahlen, Schalter umzulegen, die nichts kosten

Die Auth-Branche bepreist Erlaubnis, nicht Kosten. Sie sperrt SSO, MFA und Provisioning hinter Tarifstufen und Gebühren pro Verbindung, für Funktionen, deren Bereitstellung praktisch nichts kostet. Hier ist die Unterscheidung, die Preisseiten Sie am liebsten nie ziehen lassen würden.

June 18, 2026

Self-hosted Duende verlassen: was migriert wird und was Sie nicht mehr betreiben

Umstieg vom selbst gehosteten Duende IdentityServer auf Managed Auth: was tatsächlich aus der SQL-Konfiguration und ASP.NET Identity migriert wird, und der operative Aufwand, den Sie nicht mehr tragen.

June 16, 2026

Auth0 verlassen: was wirklich umzieht, und das eine, das sie nicht herausrücken

Ein praktischer Blick darauf, was eine Auth0-Migration wirklich bedeutet: was einfach ist, was knifflig ist und das eine, das Auth0 Ihnen ehrlich gesagt nicht gibt.