
Keycloak SSO: OpenID Connect, OAuth2 a SAML
Keycloak SSO: OpenID Connect, OAuth2 a SAML jednoducho vysvetlené
Pri výbere SSO riešenia skôr či neskôr narazíte na skratky SAML, OAuth2 a OpenID Connect. SAML a OpenID Connect sú štandardy na overenie identity; OAuth2 je autorizačný rámec, na ktorom OpenID Connect stavia – a výber správneho protokolu ovplyvní, aká jednoduchá alebo bolestivá bude integrácia vašich aplikácií.
Keycloak podporuje všetky tri. Tento článok vysvetľuje, čo každý štandard robí, čím sa líši a ako zistiť, ktorý potrebujete – bez zbytočného technického žargónu.
Prečo existujú tri štandardy a nie jeden
Za každým štandardom stojí iná éra a iný problém, ktorý bolo potrebné vyriešiť.
SAML 2.0
SAML 2.0 vznikol v roku 2005, keď podnikové IT riešilo prihlasovanie do veľkých korporátnych systémov – SAP, Oracle, Microsoft SharePoint. Firmy potrebovali, aby zamestnanec mohol prejsť z jedného systému do druhého bez opakovaného prihlasovania, a zároveň aby IT malo kontrolu nad tým, kto má kam prístup.
SAML tento problém vyriešil – a vyriešil ho dobre. Preto ho dodnes nájdete vo firmách, ktoré pred dvadsiatimi rokmi na tieto systémy prešli a meniť ich neplánujú.
OAuth 2.0
OAuth 2.0 prišiel o sedem rokov neskôr, v roku 2012, a riešil iný problém: ako dovoliť aplikácii pracovať s vašimi dátami bez toho, aby ste jej zverili heslo.
Príklad, ktorý poznáte: aplikácia, ktorá chce pristúpiť k vášmu Google Kalendáru, vás presmeruje na prihlasovaciu stránku Googlu. Heslo zadáte Googlu, nie tej aplikácii. Google jej potom poskytne obmedzený prístup.
OAuth2 je základ pre tento typ delegovaného prístupu – ale sám osebe nerieši, kto ste. Rieši len, čo smiete robiť.
OpenID Connect
OpenID Connect je tenká vrstva pridaná na OAuth2 v roku 2014, ktorá dopĺňa chýbajúcu časť: identitu.
Hovorí nielen „táto aplikácia smie čítať váš kalendár“, ale aj „prihlásený používateľ je konkrétne Jan Novák s týmto e-mailom a týmito prístupovými právami“.
Dnes je to základný štandard pre prihlasovanie vo väčšine moderných webových a mobilných aplikácií.
Výsledok je priamočiary: moderné aplikácie spravidla používajú OpenID Connect, staršie podnikové systémy spravidla SAML. Keycloak zvláda oboje – takže ak máte kombináciu starých a nových systémov, nemusíte sa rozhodovať.
Čo to v praxi znamená pre vašu firmu
Ak nasadzujete SSO, pravdepodobne integrujete kombináciu rôznych aplikácií. Takto to celé do seba zapadá.
Moderné SaaS nástroje
Slack, Jira, Notion, Salesforce a podobné nástroje dnes štandardne podporujú prihlasovanie cez OpenID Connect alebo SAML.
Väčšina z nich ponúka oboje – ak áno, vyberte OpenID Connect, jednoduchšie sa nastavuje a ľahšie sa diagnostikujú problémy.
Vlastné firemné aplikácie
Vlastné aplikácie vyvíjané interne by dnes mali používať OpenID Connect.
Prihlasovanie cez Keycloak sa do nich integruje v ráde hodín, hotové knižnice existujú pre všetky bežné programovacie jazyky.
Staršie podnikové systémy
Staršie podnikové systémy – SAP, Oracle, staršie verzie produktov Atlassian alebo staršie verzie Microsoft ADFS pred Windows Serverom 2016 – typicky podporujú iba SAML.
Keycloak je na túto situáciu pripravený a integráciu SAML zvládne. Je to o niečo viac práce než OpenID Connect, ale žiadna prekážka.
Interné API a mikroslužby
Komunikácia medzi systémami bez ľudského používateľa typicky používa OAuth2.
Jedna služba sa autorizuje voči druhej cez Keycloak bez toho, aby bol ktokoľvek prihlásený. Toto je bežný vzor v moderných cloudových architektúrach.
Ako to celé funguje: prihlasovací tok od začiatku do konca
Bez ohľadu na to, či aplikácia používa SAML alebo OpenID Connect, základný princíp je rovnaký. Používateľ chce vstúpiť do aplikácie, ale aplikácia sama osebe neoveruje identity – túto prácu deleguje na Keycloak.
Tok pri použití OpenID Connect
Používateľ príde na prihlasovaciu stránku vašej aplikácie a klikne na tlačidlo prihlásenia.
Aplikácia ho presmeruje na Keycloak.
Keycloak zobrazí prihlasovací formulár – alebo používateľa rovno rozpozná, ak je už prihlásený z inej aplikácie.
Po úspešnom prihlásení Keycloak vydá aplikácii potvrdenie: kryptograficky podpísaný token obsahujúci identitu používateľa, jeho roly a čas platnosti.
Aplikácia token overí a používateľa pustí dovnútra. Celý proces trvá zlomok sekundy.
Tok pri použití SAML
Tok pri použití SAML je principiálne totožný, len prebieha cez iný formát správ.
Namiesto kompaktného JSON tokenu sa prenáša XML dokument – spôsob navrhnutý pre staré systémy, ktorý vedia spracovať.
Kľúčový bod z pohľadu používateľa: nezáleží na tom, či aplikácia používa SAML alebo OpenID Connect. Prihlási sa raz a má prístup do všetkých aplikácií – protokol je implementačný detail, ktorý používateľ vôbec nevidí.
Ako Keycloak pracuje s protokolmi
Keycloak funguje ako centrálna brána – takzvaný poskytovateľ identity. Spravujete ho z jedného miesta a z tohto miesta riadite prístup do všetkých pripojených aplikácií bez ohľadu na to, aký protokol používajú.
Každá pripojená aplikácia sa v Keycloaku zaregistruje ako klient.
Nastavíte, ktorá aplikácia smie prihlasovať používateľov, odkiaľ smú prichádzať prihlasovacie požiadavky a aké dáta o používateľovi aplikácia dostane.
Keycloak potom stráži, aby žiadna aplikácia nedostala viac, než ste jej povolili.
Jednou zo silných stránok Keycloaku je, že jedna inštancia môže zároveň obsluhovať desiatky aplikácií cez OpenID Connect a desiatky cez SAML.
Nie je potrebné mať samostatné systémy pre rôzne protokoly.
To oceníte najmä vo firmách, kde vedľa seba bežia moderné cloudové aplikácie aj staršie podnikové systémy.
Kedy vám znalosť protokolov pomôže pri rozhodovaní
Typicky nemusíte o protokoloch premýšľať skôr, než začnete plánovať konkrétne integrácie. Potom však nastane situácia, keď je dobré vedieť, na čo sa zamerať.
Pri výbere SaaS nástroja
Pýtajte sa, či podporuje SSO cez SAML alebo OpenID Connect.
Väčšina moderných nástrojov podporuje oboje – SSO však býva uzamknuté v drahšom pláne. Zistite to pred podpisom zmluvy.
Pri integrácii staršieho systému
Zistite, aký protokol daný systém podporuje.
Ak SAML, počítajte s tým, že nastavenie bude komplexnejšie a typicky vyžaduje výmenu konfiguračných súborov, teda metadát, medzi systémom a Keycloakom.
Pri riešení problémov
Ak prihlasovanie nefunguje, znalosť protokolu pomôže určiť, kde hľadať.
Pri OpenID Connect je diagnostika obvykle jednoduchšia – tokeny sú čitateľné a nástroje na ich kontrolu sú voľne dostupné.
Pri SAML je to o niečo prácnejšie, ale stále zvládnuteľné.
Čo si z toho odniesť
Tri protokoly, jedno pravidlo: pre modernú aplikáciu zvoľte OpenID Connect, pre starší podnikový systém SAML.
Ak neviete, ktorý systém čo podporuje, spýtajte sa dodávateľa alebo si prejdite jeho dokumentáciu k SSO integrácii.
Keycloak vám dáva možnosť oboje kombinovať v rámci jednej platformy – takže nemusíte voliť.
Jedna inštalácia, jeden prihlasovací bod pre používateľa, jedno miesto na správu prístupov.
Ak integrujete konkrétny systém a nie ste si istí, ako ho do Keycloaku zapojiť, alebo narážate na problémy s existujúcou integráciou, radi vám pomôžeme.



