
Keycloak SSO: OpenID Connect, OAuth2 a SAML jednoduše vysvětlené
Při výběru SSO řešení dříve nebo později narazíte na zkratky SAML, OAuth2 a OpenID Connect. SAML a OpenID Connect jsou standardy pro ověření identity; OAuth2 je autorizační rámec, na kterém OpenID Connect staví – a výběr správného protokolu ovlivní, jak snadná nebo bolestivá bude integrace vašich aplikací.
Keycloak podporuje všechny tři. Tento článek vysvětluje, co každý standard dělá, čím se liší a jak poznat, který potřebujete – bez zbytečného technického žargonu.
Proč existují tři standardy a ne jeden
Za každým standardem stojí jiná éra a jiný problém, který bylo potřeba vyřešit.
SAML 2.0
SAML 2.0 vznikl v roce 2005, kdy podnikové IT řešilo přihlašování do velkých korporátních systémů – SAP, Oracle nebo Microsoft SharePoint. Firmy potřebovaly, aby zaměstnanec mohl přejít z jednoho systému do druhého bez opakovaného přihlašování, a zároveň aby IT mělo kontrolu nad tím, kdo má přístup kam.
SAML tento problém vyřešil – a vyřešil ho dobře. Proto ho dodnes najdete ve firmách, které před dvaceti lety na tyto systémy přešly a měnit je nehodlají.
OAuth 2.0
OAuth 2.0 přišel o několik let později a řešil jiný problém: jak dovolit aplikaci pracovat s vašimi daty, aniž byste jí svěřili heslo.
Příklad, který znáte: aplikace, která chce přistoupit k vašemu Google Kalendáři, vás přesměruje na Google přihlašovací stránku. Heslo zadáte Googlu, ne té aplikaci. Google jí pak dá omezený přístup.
OAuth2 je základ pro tento typ delegovaného přístupu – ale sám o sobě neřeší, kdo jste. Řeší jen, co smíte dělat.
OpenID Connect
OpenID Connect je vrstva přidaná na OAuth2, která doplňuje chybějící část: identitu.
Říká nejen „tato aplikace smí číst váš kalendář“, ale také „přihlášený uživatel je konkrétně Jan Novák s tímto e-mailem a těmito přístupovými právy“.
Dnes je OpenID Connect základní standard pro přihlašování ve většině moderních webových a mobilních aplikací.
Výsledek je přímočarý: moderní aplikace zpravidla používají OpenID Connect, starší podnikové systémy zpravidla SAML. Keycloak zvládá obojí – takže pokud máte mix starých a nových systémů, nemusíte se rozhodovat.
Co to v praxi znamená pro vaši firmu
Pokud nasazujete SSO, pravděpodobně integrujete kombinaci různých aplikací. Tady je, jak to celé do sebe zapadá.
Moderní SaaS nástroje
Slack, Jira, Notion, Salesforce a podobné nástroje dnes standardně podporují přihlašování přes OpenID Connect nebo SAML. Většina z nich nabízí obojí – a pokud ano, obvykle dává smysl vybrat OpenID Connect, protože je jednodušší na nastavení a snazší na diagnostiku problémů.
Vlastní firemní aplikace
Vlastní aplikace vyvíjené interně by dnes měly používat OpenID Connect. Přihlašování přes Keycloak se do nich integruje v řádu hodin a hotové knihovny existují pro všechny běžné programovací jazyky.
Starší podnikové systémy
SAP, Oracle, starší verze Atlassian produktů nebo starší verze Microsoft ADFS typicky podporují SAML. Keycloak je na tuto situaci připravený a SAML integraci zvládne. Je to o něco víc práce než OpenID Connect, ale není to překážka.
Interní API a mikroservisy
Komunikace mezi systémy bez lidského uživatele typicky používá OAuth2. Jedna služba se autorizuje vůči druhé přes Keycloak, aniž by byl kdokoliv přihlášený. To je běžný vzor v moderních cloudových architekturách.
Jak to celé funguje: přihlašovací tok od začátku do konce
Bez ohledu na to, jestli aplikace používá SAML nebo OpenID Connect, základní princip je stejný. Uživatel chce vstoupit do aplikace, ale aplikace sama o sobě neověřuje identity – tuto práci deleguje na Keycloak.
Tok při použití OpenID Connect
Uživatel přijde na přihlašovací stránku vaší aplikace a klikne na tlačítko přihlášení. Aplikace ho přesměruje na Keycloak.
Keycloak zobrazí přihlašovací formulář – nebo uživatele rovnou rozpozná, pokud už je přihlášený z jiné aplikace.
Po úspěšném přihlášení Keycloak vydá aplikaci potvrzení: kryptograficky podepsaný token obsahující identitu uživatele, jeho role a dobu platnosti.
Aplikace token ověří a uživatele pustí dovnitř. Celý proces trvá zlomek sekundy.
Tok při použití SAML
Tok při použití SAML je principiálně totožný, jen probíhá přes jiný formát zpráv. Místo kompaktního JSON tokenu se přenáší XML dokument – způsob navržený pro starší systémy, které ho umí zpracovat.
Klíčový bod z pohledu uživatele: nezáleží na tom, jestli aplikace používá SAML nebo OpenID Connect. Přihlásí se jednou a má přístup do všech aplikací. Protokol je implementační detail, který uživatel vůbec nevidí.
Jak Keycloak s protokoly pracuje
Keycloak funguje jako centrální brána – identity provider. Spravujete ho z jednoho místa a z tohoto místa řídíte přístup do všech napojených aplikací bez ohledu na to, jaký protokol používají.
Každá napojená aplikace se v Keycloaku zaregistruje jako klient. Nastavíte, která aplikace smí přihlašovat uživatele, odkud smí přihlašovací požadavky přicházet a jaká data o uživateli aplikace dostane.
Keycloak pak hlídá, aby žádná aplikace nedostala víc, než jste jí povolili.
Jedna ze silných stránek Keycloaku je, že jedna instance může zároveň obsluhovat desítky aplikací přes OpenID Connect a desítky přes SAML. Není potřeba mít separátní systémy pro různé protokoly.
To oceníte zejména ve firmách, kde vedle sebe běží moderní cloudové aplikace i starší podnikové systémy.
Kdy vám znalost protokolů pomůže při rozhodování
Typicky nemusíte o protokolech přemýšlet dříve, než začnete plánovat konkrétní integrace. Pak ale nastane situace, kdy je dobré vědět, na co se zaměřit.
Při výběru SaaS nástroje
Ptejte se, jestli podporuje SSO přes SAML nebo OpenID Connect. Většina moderních nástrojů podporuje obojí – SSO ale bývá často uzamčené v dražším plánu. Zjistěte to před podpisem smlouvy.
Při integraci staršího systému
Zjistěte, jaký protokol daný systém podporuje. Pokud SAML, počítejte s tím, že nastavení bude komplexnější a typicky vyžaduje výměnu konfiguračních souborů mezi systémem a Keycloakem.
Při řešení problémů
Pokud přihlašování nefunguje, znalost protokolu pomůže určit, kde hledat. U OpenID Connect je diagnostika obvykle jednodušší – tokeny jsou čitelné a nástroje pro jejich inspekci jsou volně dostupné. U SAML je to o něco pracnější, ale stále zvládnutelné.
Co si z toho odnést
Tři protokoly, jedno pravidlo: pro moderní aplikaci zvolte OpenID Connect, pro starší podnikový systém SAML.
Pokud nevíte, který systém co podporuje, zeptejte se dodavatele nebo si projděte jeho dokumentaci k SSO integraci.
Keycloak vám dává možnost obojí kombinovat v rámci jedné platformy. Nemusíte tedy volit mezi moderním a legacy světem.
Jedna instalace, jeden přihlašovací bod pro uživatele, jedno místo pro správu přístupů.
Pokud integrujete konkrétní systém a nejste si jistí, jak ho do Keycloaku napojit, nebo narážíte na problémy s existující integrací, rádi vám pomůžeme.
Chcete vědět víc?
→ Přečtěte si, co je SSO a kdy dává firmám smysl
→ Podívejte se na srovnání Keycloak vs Auth0
→ Zjistěte, jak propojit Keycloak s Active Directory a LDAP
→ Zjistěte, na co myslet při produkčním nasazení Keycloaku





