Blog

August 5, 2026

Ons uitsluiting na vyf verkeerde wagwoorde het niemand ooit uitgesluit nie

Vyf verkeerde wagwoorde sluit die rekening. Die kontrole en die drempel was reg, en tog kon jy tienduisend verkeerde wagwoorde stuur en dit nooit aktiveer nie, solank jy hulle almal gelyktydig stuur. Die teller was 'n lees-wysig-skryf sonder beskerming, dus het gelyktydige pogings mekaar se inkremente oorgeskryf en dit het skaars geklim. Die oplossing: hoe bou jy 'n atomiese teller op 'n sleutel-waarde-stoor sonder inkrement-bewerking, en aanvaar iemand tel in parallel.

August 3, 2026

In 2012 het die man wat die pen by OAuth 2.0 gehou het, bedank. Sy redes lees soos 'n voorspelling.

Eenmalige aanmelding is al meer as twintig jaar 'n gevestigde standaard, en tog is SAML steeds die reël op die kwotasie wat 'n transaksie laat stol of 'n oproep na verkope ontketen. Hoe ondernemingsverifikasie 'n premie-opverkoop geword het, wie daardie wêreld gebou het en wie ons daaroor gewaarsku het, hoe wyd die grag werklik is en waarvan dit gemaak is, en die een krag wat stilweg die helfte daarvan leegtap.

July 31, 2026

Ons het bewys dat elke waarskuwing kon afgaan. Die meeste van hulle kon nie.

Monitering is die kode wat net tydens 'n ramp loop. Daarom het ons 'n toetstuig gebou wat vir elke waarskuwingreël 'n werklike sein dryf en eers slaag wanneer die kennisgewing fisies in 'n vangaflos beland. Die eerste lopie het ons vlagskip-foutkoerswaarskuwing morsdood gevind, en toe erger: 'n behoudsinstelling het stilweg onmiddellike vervaltyd op ons logs gestempel, sodat 'n hele klas waarskuwings oor niks geëvalueer het terwyl inname gesond gelyk het.

July 30, 2026

Ons het ons beelde na 'n CDN geskuif en die oorsprong het hulle steeds bedien

Honderd megagrepe se dokumentasie-skermkiekies het na Cloudflare R2 geskuif, agter 'n CDN-basis wat die app uit sy eie gasheernaam aflei. Dit het in die blaaier gewerk maar niks aan die oorsprong se verkeer gedoen nie, want die bladsye wat 'n soekrobot sien, word op 127.0.0.1 vooraf gerender, waar 'n gasheernaam niks beteken nie. Die oplossing is 'n plekhouer wat die HTML uit die bou dra en die rand per versoek invul, en die rede is 'n leesalleen-lêerstelsel.

July 29, 2026

Ons het 'n gevaarlike verstek afgeskakel sonder om 'n enkele ry te migreer

Net betyds voorsiening was standaard aan, so 'n gefedereerde identiteitsverskaffer kon rekeninge in 'n kliënt se huurgebied skep bloot deur te beweer dat iemand bestaan. Om daardie verstek af te skakel is 'n een woord verandering. Om dit af te skakel sonder om stilweg elke reeds gestoorde verbinding se gedrag te verander, waarvan nie een ooit die kolom geskryf het nie, is die werklike probleem, en die truuk wat dit opgelos het wys ook waarom 'n verstek API oppervlak is.

July 28, 2026

'n BFF vir baie huurders, en die een versoek wat sonder koekie aankom

'n backend-for-frontend haal OAuth-tokens uit die blaaier en laat dit met niks anders as 'n ondeursigtige koekie agter. Om baie huurders vanaf een BFF te bedien is meestal 'n loodgietersprobleem, totdat terugkanaal-afmelding opdaag: 'n bediener-tot-bediener POST sonder koekie, sonder sessie en sonder blaaier, waar die enigste ding wat die huurder identifiseer 'n eis binne 'n token is wat jy nog nie geverifieer het nie.

July 27, 2026

Die toelatingswebhook wat ja gesê het en ons tog platgetrek het

Ons het 'n handtekening-kontrolerende toelatingswebhook by ons Kubernetes-kluster gevoeg sodat ongetekende beelde nooit kon loop nie. 'n Paar uur later het een Deployment 2 242 ReplicaSets gehad, 'n nuwe een elke drie sekondes, en geen beskikbare pods nie. Die webhook se logs het gewys dat dit elke enkele versoek toelaat. Die skade het gekom van die een woord in "mutating admission webhook" wat ons opgehou lees het.

July 23, 2026

Ons aanmelding het presies 10 sekondes gehang. Ons eie sekuriteitskoptekste het dit gedoen.

'n Terugkerende gebruiker het elke keer presies tien sekondes na "Laai tans…" gekyk voor aanmelding verskyn het. Die ronde getal was die verklikker: ons SSO-biblioteek het 'n verborge stil-hernuwing-iframe teen 'n auth-gasheer met X-Frame-Options: DENY en frame-ancestors 'none' oopgemaak, so die raam het nooit gelaai of gefouteer nie en die biblioteek het sy volle tydvertraging uitgewag. Klikkaping-verdediging en OIDC-stilhernuwing het in die naat gehang.

July 22, 2026

HMAC het my outovoltooiing opgevreet: vooruit-tik-soektog oor geënkripteerde e-posse

Ons het elke e-posadres in rus geënkripteer, en die admin-soekkassie het stilweg opgehou outovoltooi: geen fout, geen loglyn nie. 'n Blind index herstel presiese-passing-opsoek oor syferteks, maar HMAC se hele taak is om die ordening te vernietig wat voorvoegsel-soektog nodig het. Hier is die ontwerp wat vooruit-tik teruggebring het (indekseer elke voorvoegsel as sy eie waarde) en die drie strikke wat ons geleer het dat deursoekbare enkripsie 'n stelselprobleem is, nie 'n kriptoprobleem nie.

July 20, 2026

Een ES256-migrasie, drie maniere om 'n geldige handtekening te verknoei

Ons het JWT-ondertekening van RS256 na ES256 geskuif, en elke token wat ons gemunt het was kriptografies geldig, en tog verwerp. Drie keer, om drie verskillende redes: DER waar JWS rou R‖S verwag, heelgetal-opvulling wat een token uit 128 laat faal, en 'n base64-dialek wat onder ons voete verander het. Hier is hoe om die verknoeide grepe te lees en die skuldige laag net uit die handtekeninglengte te identifiseer.

July 20, 2026

Elke tokenvalidering het ons oorsprong getref. Nou woon die JWKS op die rand.

Die twee dokumente wat 'n diens lees om een van ons JWTs te valideer — die discovery-dokument en die JWKS — is die mees-aangevraagde, mins-geheime dinge wat ons bedien, en elke haalversoek het vroeër die hele pad terug na oorsprong gekom. Om hulle op Cloudflare te kas, was die maklike deel. Die moeilike deel is dat 'n verouderde publieke-sleutel-kas nooit 'n geldige token mag verwerp nie, en hier is die rotasie-veilige volgorde wat 'n aggressief-gekaste JWKS veilig maak.

July 18, 2026

Duende IdentityServer se goedkoopste lisensie kan nie SAML doen nie

Duende se LITE-vlak is $5,750/yr, maar dit beperk jou tot 2 kliënt-toepassings en lewer glad geen SAML nie. Die oomblik dat jy onderneming-SSO of 'n derde toepassing nodig het, sit jy op STANDARD teen $12,500. 'n Blik op wat Duende werklik 'n regte produk kos, en die kliënt-getal-belasting waarteen niemand jou waarsku nie.

July 17, 2026

Die drie lewens van my JWT-ondertekeningsleutel

Een private sleutel onderteken elke token wat ons auth-bediener uitreik, en dit het twee keer in sy lewe geskuif: gebore binne die proses, verban na 'n kluis wat dit nie kan verlaat nie, en toe herbore as 'n heeltemal kleiner, vinniger soort sleutel. Elke skuif het op 'n lewende uitreiker met tokens onderweg gebeur. Hier is wat bewaring- en algoritmeveranderinge werklik verg, en die stil regressie wat op 'n 'meer veilige' commit saamgery het.

July 16, 2026

Die SAML-handtekening was geldig. Dit was nooit die probleem nie.

Jou SP het die assertion se handtekening gevalideer, die sertifikaat vasgepen, en die gebruiker ingeteken. Elke kontrole het geslaag. Tog het ek 'n aanmelding herspeel wat ek 'n uur gelede vasgelê het. Die truuk was nie om die handtekening te breek nie. Dit was om 'n veld te skrap wat die handtekening nooit gedek het nie.

July 14, 2026

Ons het MFA vereis. Een query-parameter het dit afgeskakel.

Ons het die tweede faktor op die aanmeldbladsy afgevra en dit nooit weer by die token-endpoint gekontroleer nie. So het 'n geldige wagwoord plus 'n handgewysigde return-URL reguit by MFA verbygestap. Die regstelling, en die reël wat dit ons geleer het: MFA is 'n eienskap van die sessie wat jy uitreik, nie 'n stap in die aanmeldskerm nie.

July 14, 2026

Die SCIM-belasting: gebruikersvoorsiening is loodgieterswerk, nie 'n premie nie

SCIM is 'n gestandaardiseerde CRUD-API waarvan die belangrikste werkwoord die een is wat 'n oudwerknemer se rekening afskakel. Verskaffers vra $125 per maand per verbinding daarvoor, of parkeer dit in die ondernemingsvlak langs SSO. Hier is wat 'n SCIM-verbinding werklik kos om te bedien, en waarom om vir deprovisionering te vra, is om vir sekuriteit te vra.

July 12, 2026

Jou rugsteun wek stilweg die gebruikers op wat jy uitgevee het

Azure Table Storage en DynamoDB het geen uitveemerkers nie, so 'n uitgeveede ry verdwyn eenvoudig, wat beteken jou inkrementele rugsteun sien die uitvee glad nie. Herstel daardie rugsteun en die gebruiker wat jy uitgefaseer het, is terug, met die wagwoord waarvan jy weggeroteer het. Hier is waarom uitvee-aksies eersteklas moet wees, en die een tabel wat hulle so maak.

July 11, 2026

Elke per-IP-kontrole wat ons uitgestuur het, kon met een header omseil word

Ons rate limiter en uitsluit-teller het op die kliënt se IP gesleutel. Agter nginx het daardie IP uit 'n header gekom wat die kliënt self kon stel, so een roterende header het elke request 'n vars IP gegee en elke per-IP-kontrole het omgeval. Die een-reël-spoof, en die regstelling wat op Kubernetes knopiger is as wat dit lyk.

July 10, 2026

Ons laat 'n hele auth-stelsel loop op stores wat net get en put ken

Azure Table Storage gee jou 'n partition key, 'n row key, en amper niks anders nie. Geen joins nie, geen secondary indexes om van te praat nie, geen increment nie. Ons laat in elk geval 'n multi-tenant auth-stelsel daarop loop. Die patrone wat dit laat werk, en wat jy prysgee teenoor SQL.

July 9, 2026

Jou wagwoord-herstelvorm is 'n gratis e-poskanon

'n Ongeverifieerde wagwoord-herstel-eindpunt sonder 'n per-e-pos rate limit is nie net jou probleem nie. Rig dit op iemand anders se inkassie en jy het hul herstelvorm in 'n strooiposkanon verander, gefaktureer teen jou stuurder-reputasie. Die oplossing, sonder om te lek watter e-posse rekeninge het.

July 7, 2026

Ons het elke funksie op die gratis vlak weggegee, ook dié wat mededingers vir enterprise terughou

Die meeste auth-verskaffers span SSO, SCIM, MFA en oudit-logboeke agter 'n Enterprise-plan toe. Ons sit almal daarvan op die $0-vlak. Hier is die eenheidsekonomie wat dit oorleefbaar maak om funksies weg te gee: die muur was nooit funksies nie, dit is aktiewe gebruikers en ondersteuning.

July 6, 2026

'n Identiteitsverskaffer het ons vertel wie jy is, en ons het dit geglo

Eenmalige aanmelding beteken om die identiteitsverskaffer te vertrou. Ons het hom met een ding te veel vertrou: ons het terugkerende gefedereerde gebruikers opgelos aan die hand van die e-pos in die bewering, sodat enige verbinding iemand anders se adres kon beweer en op daardie rekening kon beland. Die regstelling was nie meer validering nie. Dit was om die identiteits-aansluitsleutel van e-pos na 'n per-verskaffer subject te verander wat die berend party nie kan vervals nie.

July 6, 2026

Skaal-tot-nul kan nie tot een tel nie

Azure Container Apps het belowe om te keer dat ons betaal vir 'n ledige verifikasiekluster. Ons het die koste van die migrasie bereken en dit gestop, nie oor prys of cold starts nie, maar omdat serverless die enigste getal mis wat 'n leier-verkose verifikasie-backplane werklik benodig.

July 3, 2026

Die SSO-belasting, in dollars: wat SAML werklik kos by Auth0, WorkOS en Clerk

Die "kenmerkbelasting" as 'n werklike rekening. Drie kopersscenario's (eerste enterprise-transaksie, 'n handvol klante, SSO as basiese vereiste) bereken teen elke verskaffer se openbare tariewe. Plus die stiller bytaks waarvoor niemand jou waarsku nie: om mid-integrasie sonder OAuth-kliënte te beland.

July 1, 2026

Ons diensontdekking het sy eie mislukking gevang en homself afgeskakel

ʼn Drie-replika-tros het aanhoudend met homself verskil. Die oorsaak was in ons eie kode: die eweknie-ontdekkingsroetine het ʼn catch-blok gehad wat ontdekking afgeskakel het wanneer multicast misluk, en op bestuurde Kubernetes misluk multicast altyd. Hier is hoekom ons gossip heeltemal uitgevee het en eerder ʼn leier met ʼn blob lease verkies het, en hoekom ʼn lidmaatskap wat jy in Storage Explorer kan oopmaak beter is as een wat jy moet aflei.

June 30, 2026

Bou of koop auth: die rekening wat jy nie sien kom nie

Aanmelding is 'n naweek. Die rekening kom daarna: handtekeningverifikasie, SCIM-de-provisionering, MFA, ouditlogboeke, sleutelrotasie, skendingsaanspreeklikheid, en wagdiens vir 'n vlak-nul-stelsel. 'n Eerlike bou-of-koop, insluitend wanneer bou reg is.

June 28, 2026

OIDC of SAML: watter een jy werklik nodig het

OIDC of SAML? Jy kry selde die keuse. Wat elke protokol is, wanneer elkeen wen, die XML-handtekening-slaggate wat SAML gevaarlik maak om self te bou, en hoekom 'n B2B-produk uiteindelik albei nodig het.

June 26, 2026

Ondersteuning wat jou taal praat. Sonder dat jy hoef te vra.

Authagonal se ondersteuningstelsel: kitsboodskappe sonder herlaai, deursigtige tweerigting-KI-vertaling wat vanaf die kliënt se eerste boodskap vasgepen word, en 'n gesprek wat ten volle vertaal bly, selfs per e-pos. Eenvoudig, mooi en werklik in staat.

June 25, 2026

Een koppelteken, twee huurders, een ondertekeningsleutel

Twee van ons huurders was stilweg dieselfde huurder: dieselfde databasis, dieselfde token-ondertekeningsleutel, verskillende name. Die oorsaak was 'n een-reël-hulpfunksie wat slugs gesuiwer het deur koppeltekens te verwyder, en so 'n unieke identifiseerder in 'n nie-unieke een verander het. Hier is hoe 'n verlieslike string-transformasie 'n kruis-huurder-oorname geword het, en hoekom ons dit voor jou gevind het.

June 23, 2026

Groen eenheidstoetse beteken nie jy kan regstreeks gaan nie

Ons verkoop verifikasie, en daarom is ons belangrikste toets een wat 'n klant word: 'n enkele Playwright-lopie wat 'n huurder registreer, elke kenmerk konfigureer, 'n werklike toepassing daarop rig, 'n werklike gebruiker met die regte aansprake aanmeld, en dan rugsteun, herstel en homself uitvee. Hoe deeglike end-tot-end-toetsing ons vertroue gegee het om regstreeks te gaan.

June 22, 2026

Ons meld by ons eie admin-konsole aan met ons eie SAML. Hier is wat dit gevang het.

Ons personeelkonsole staaf deur Authagonal self, met Entra SSO en SCIM wat die voorsiening doen. Om jou eie klant te wees, bring die randgevalle na vore wat geen toetsstel daaraan dink om te skryf nie. Hier is dié wat saak gemaak het.

June 22, 2026

Haal jou Terraform-toestand van die publieke internet af (sonder om 'n VPN op te stel)

Jou Terraform-toestand is 'n volledige kaart van jou wolk plus 'n hoop geheime, en by verstek leef dit agter 'n publieke eindpunt. Hier is hoe ons afgeleë toestand van nuuts af opgestart het, dit agter 'n privaat eindpunt geplaas het, en dit deur 'n zero-trust-koppelaar bereik het in plaas daarvan om die VPN-gateway-belasting te betaal, sonder om onsself ooit uit te sluit.

June 21, 2026

Gebruikers invoer sonder 'n wagwoordterugstelling

"Almal stel hul wagwoord terug" is 'n migrasiekeuse, nie 'n wet van die fisika nie. Hoe om jou gebruikers se bestaande wagwoord-hutswaardes oor 'n identiteitsverskaffer-skuif te dra sodat die oorskakeling onsigbaar is, en die een geval waar jy regtig nie kan nie.

June 20, 2026

Die kenmerkbelasting: hou op om te betaal om skakelaars oor te haal wat niks kos nie

Die auth-bedryf meet toestemming, nie koste nie. Dit sluit SSO, MFA en voorsiening agter vlakke en per-verbinding-fooie toe vir kenmerke wat feitlik niks kos om te lewer nie. Hier is die onderskeid wat prysbladsye hoop jy nooit sal tref nie.

June 18, 2026

Om self-gehoste Duende te verlaat: wat migreer, en wat jy ophou bedryf

Om van self-gehoste Duende IdentityServer na bestuurde verifikasie te skuif — wat werklik migreer vanaf die SQL-konfigurasie en ASP.NET Identity, en die bedryfskoste wat jy ophou dra.

June 16, 2026

Om Auth0 te verlaat: wat werklik oortrek — en die een ding wat hulle nie sal oorhandig nie

ʼn Praktiese blik op wat ʼn Auth0-migrasie werklik behels: wat maklik is, wat lastig is, en die een ding wat Auth0 werklik nie vir jou sal gee nie.