Ons meld by ons eie admin-konsole aan met ons eie SAML. Hier is wat dit gevang het.
Daar is 'n weergawe van dogfooding wat 'n slagspreuk is, en 'n weergawe waar jou eie werknemers nie kode kan stuur voordat die fout reggemaak is nie. Ons doen die tweede soort. Die Authagonal-personeelkonsole, dié een wat ons gebruik om elke huurder te bestuur, staaf deur Authagonal self: SAML enkelaanmelding vanaf ons Entra-gids, met SCIM wat besluit wie ingelaat word en wat hulle mag doen. Daar is geen aparte admin-wagwoordtabel nie. Ons het dit uitgevee. As ons eie SAML stukkend is, is ons uit ons eie produk gesluit.
Dit is ongemaklik op presies die nuttige manier. Dit verander "SSO is 'n ondernemingskenmerk wat ons ondersteun" in "SSO is die enigste manier waarop die mense wat dit gebou het vandag kan werk." Hier is wat dit gevang het om ons eie klant te wees.
'n Getrimde bou wat handtekeningverifikasie gebreek het
Ons publiseer die auth-bediener getrim, om die beeld klein te hou. Trimming vee aggressief kode uit wat dit nie kan bewys gebruik word nie, en refleksie versteek die gebruik daarvan. .NET los sy XML-ondertekening-kripto-algoritmes op volgens naam, deur refleksie, deur CryptoConfig. Die trimmer kon nie sien dat daardie tipes nodig was nie, het hulle verwyder, en SignedXml het stilweg teruggekom sonder die vermoë om die algoritme te bou. SAML-handtekeningverifikasie, die stap wat bewys die aanmelding is eg, het 'n nulverwysing tydens looptyd gegooi.
Die eenheidstoetse het geslaag, want hulle het teen die ongetrimde bou geloop waar die tipes steeds bestaan het. Slegs die getrimde produksie-artefak het misluk, en dit het misluk op die presiese oomblik toe 'n mens probeer aanmeld het. Ons stuur die auth-bediener nou ongetrim, met 'n gesonde wantroue om enigiets naby refleksiegebaseerde kripto te trim. As ons SAML net ondersteun het eerder as om daarop te leef, is dit 'n klant se voorvalverslag in plaas van ons s'n.
Voorsiening is die werklike aanmelding
Om 'n gebruiker te staaf is die maklike helfte van SSO. Die moeilike helfte is om te besluit wat hulle mag doen en om dit in sinkronisasie te hou soos mense aansluit en vertrek. Ons dryf dit met SCIM: Entra-groeplidmaatskap karteer na rolle, opgelos op die oomblik wanneer 'n token uitgereik word, nie een keer gekopieer met rekeningskepping nie. Voeg iemand by die regte groep en hulle het toegang met hul volgende aanmelding; verwyder hulle en dit is weg. Ons eie toeganglys dogfood die presiese groep-na-rol-kartering wat ons stuur.
Daardie bedrading bring 'n klas fout na vore wat slegs bestaan wanneer outentisering en magtiging in twee verskillende stelsels leef: 'n pas-voorsiende admin kon staaf voordat hul rol heeltemal geland het, wat die eerste aanmelding in 'n geldige-maar-ongemagtigde toestand laat. Die oplossing is in die voorsieningsvolgorde, nie die aanmelding nie, en jy vind dit slegs deur die nuwe admin te wees wat vir die eerste keer aanmeld.
'n 500 wat 'n 403 moes gewees het
Die kleinste fout was die mees gênante. Wanneer 'n gestaafde gebruiker iets getref het waarvoor hulle nie toegelaat was nie, het die API 'n 500 in plaas van 'n skoon 403 teruggegee, omdat die kodepad wat die "verbode"-respons uitreik, afgehang het van 'n diens wat nie in daardie gasheer bedraad was nie. 'n Geweierde versoek is veronderstel om 'n kalm, verwagte uitkoms te wees, nie 'n bedienerfout nie. Onsigbaar totdat jy die een is wat geweier word.
Die grens waaroor ons die meeste omgee
Onder dit alles is die een reël wat 'n multi-huurder-identiteitsplatform nie verkeerd kan kry nie: 'n huurder mag nooit ons admin word nie. Ons vertrou nie 'n enkele kontrole nie. Die platform is sy eie uitreiker en 'n huurder kan nie sy slug eis nie; die platform-ondertekeningsleutel is apart van elke huurder s'n, sodat 'n token wat vir 'n huurder onderteken is nie as 'n platform-token herhaal kan word nie; en die platformstoor dwing platformrolle onafhanklik af. Drie slotte, want die koste van een wat oop misluk, is die hele produk.
Die punt
Nie een van hierdie is deur 'n slim toets gevang nie. Hulle is gevang deur 'n persoon wat probeer het om hul werk te doen en nie kon nie. Dit is die argument om jou eie produk te gebruik op die diepte waar dit jou kan seermaak: dit verander die foute wat in die gapings tussen stelsels wegkruip in foute wat jy voor ontbyt regmaak, want jy kan nie stuur voordat jy dit doen nie.
Alles waarop ons konsole staatmaak (SSO, SAML, SCIM, MFA, ouditlogboeke) is by elke Authagonal-plan ingesluit, nie agter 'n vlak afgesper of per verbinding gemeet nie. Sien wat ingesluit is.