[Uwaga] Ten artykuł został pierwotnie przygotowany w języku angielskim i został przetłumaczony na język polski.
Zastrzeżenie: Oryginalny artykuł został opublikowany w lutym 2023 r., ale w październiku 2023 r. zaktualizowaliśmy go o dodatkową treść, w tym rozdział dotyczący infrastruktury i szacowania kosztów oraz darmowy Keycloak Cost Estimation Cheat Sheet. W kwietniu 2024 r. dodaliśmy również zupełnie nowy rozdział o wstępnej konfiguracji Keycloak oraz darmowy Keycloak Valuation Form. Ostatecznie, rok później – w kwietniu 2025 r. – zaktualizowaliśmy go o nową sekcję dotyczącą przypadków użycia Keycloak.
Single Sign-On (SSO) to funkcja, która pozwala Twoim pracownikom na jednorazowe uwierzytelnienie tożsamości w danym systemie, zamiast robienia tego za każdym razem, gdy uzyskują dostęp do innej aplikacji firmowej. Pozwala to również uprościć Twoje aplikacje – nie ma potrzeby tworzenia strony logowania i mechanizmu uwierzytelniania dla każdego programu z osobna, nie musisz też martwić się o przechowywanie danych użytkowników (user storage). Dzięki SSO użytkownicy uwierzytelniają się poprzez scentralizowanego Identity Providera (IdP), aby płynnie korzystać z wielu aplikacji, co zwiększa zarówno wygodę użytkownika, jak i bezpieczeństwo.
W tym artykule pokażemy, jak włączyć SSO w Twoich aplikacjach przy użyciu Keycloak – jednej z najbardziej znanych i bezpiecznych usług autoryzacyjnych, której używaliśmy w kilku projektach realizowanych dla naszych klientów.
Keycloak to oparte na Javie, open-source’owe narzędzie do Identity and Access Management (IAM), rozwijane przez amerykańską firmę Red Hat – tę samą, którą możesz znać z wkładu w GNOME i wiele innych projektów otwartego oprogramowania. Pozwala ono na bezpieczne uwierzytelnianie (authentication) i autoryzowanie (authorization) użytkowników w Twoich aplikacjach.
Jak to działa? To całkiem proste. Zamiast logować się do każdej aplikacji z osobna, użytkownicy robią to raz na stronie uwierzytelniania Keycloak. Po podaniu poprawnych danych identyfikacyjnych (username i password), technologia weryfikuje ich tożsamość. Tworzony jest jednorazowy kod weryfikacyjny, który jest pobierany przez aplikację i wymieniany na tokeny: ID, access oraz refresh token. Na tej podstawie system przyznaje lub odmawia użytkownikowi dostępu.
Oto niektóre z największych korzyści oferowanych przez Keycloak.
Keycloak pozwala uzyskać wysokiej jakości system SSO bez konieczności tworzenia niestandardowych rozwiązań programistycznych (co może być bardzo kosztowne i czasochłonne). Co więcej, nie musisz płacić opłat licencyjnych ani serwisowych.
Główna korzyść biznesowa: oszczędzasz znaczne ilości czasu i pieniędzy.
Keycloak jest niezwykle łatwy w konfiguracji i integracji z aplikacjami, wymagając niewielkich lub żadnych umiejętności programistycznych. Co więcej, masz mnóstwo opcji wdrożenia. Możesz używać Keycloak on-premise lub wybrać dostawcę usług chmurowych, takiego jak Azure Kubernetes. Wszystko zależy od Twoich konkretnych potrzeb.
Po stronie frontendu możesz używać konfigurowalnych, gotowych elementów, takich jak ekrany procesów użytkownika (zmiana hasła, logowanie itp.) oraz GUI (graficzne interfejsy użytkownika). Formularze i biblioteki pozwalają zarządzać przepływem bezpieczeństwa (security flow).
Backend również jest dość łatwy w obsłudze. Możesz użyć poręcznego REST API, aby połączyć Keycloak ze swoimi systemami i obsługiwać odświeżanie tokenów itp.
Możesz skonfigurować kompletny mechanizm logowania przy użyciu popularnych sieci społecznościowych, Identity Providerów (IdP) SAML 2.0, istniejącego OpenID Connect lub serwerów LDAP / Active Directory.
Główna korzyść biznesowa: szybka integracja oznacza szybsze wdrożenie aplikacji w firmie. Masz również elastyczność integracji z istniejącymi systemami, więc nie ma potrzeby dodatkowego, kosztownego developmentu.
Dla systemu kontroli dostępu nie ma ważniejszej kwestii niż bezpieczeństwo – można by rzec, że to cała istota jego istnienia.
Zdroworozsądkowym podejściem jest korzystanie z rozwiązań, które inne firmy już sprawdziły i przetestowały. W końcu na pewno lepiej uczyć się na czyimś przykładzie, niż samemu być źródłem takiej lekcji dla innych. Keycloak to jedna z najlepszych, a co za tym idzie, najbardziej przetestowanych i znanych opcji na rynku.
Główna korzyść biznesowa: bezpieczeństwo z najwyższej półki, przetestowane przez wiele innych organizacji. W rzeczywistości większość Twoich potrzeb w zakresie security może zostać zaspokojona przez samego Keycloaka.
Oto niektóre z funkcji oferowanych przez Keycloak:
Główna korzyść biznesowa: świetna zdolność adaptacji i skalowalność. Otrzymujesz nowoczesny, bogaty w funkcje system zarządzania dostępem, który skaluje się wraz z rozwojem Twojego biznesu. Możesz również dalej rozszerzać funkcjonalność rozwiązania w zależności od potrzeb, co nie wymaga wielkich inwestycji.
Mimo swojego wieku (pierwsze wydanie miało miejsce we wrześniu 2014 r.), Keycloak jest wciąż ewoluującą technologią. Nowe wersje publikowane są cyklicznie – ostatni stabilny build pojawił się na GitHubie w marcu 2025 r., zaledwie kilka tygodni temu. Oznacza to, że narzędzie stale otrzymuje nowe funkcje i ulepszenia.
Wokół Keycloaka istnieje również bardzo duża i aktywna społeczność. Deweloperzy, którzy ją tworzą, dostarczają świetne wtyczki i są zawsze gotowi odpowiedzieć na palące pytania. Jeśli potrzebujesz w czymś pomocy, możesz po prostu zapytać (np. na wspomnianej stronie GitHub, ale istnieje również wiele wątków związanych z Keycloak na Stack Overflow).
Główna korzyść biznesowa: mimo wielu lat na rynku, Keycloak nie jest technologią typu legacy. Masz dostęp do aktualizacji i prężnie działającej społeczności.
Oto kilka typowych use case’ów dla technologii Keycloak IAM:
Keycloak oferuje szereg metod uwierzytelniania, takich jak username/password oraz multi-factor authentication (MFA). Możesz go również zintegrować z zewnętrznymi dostawcami tożsamości. W zależności od wybranego narzędzia, system pozwala monitorować aktywność uwierzytelniania użytkowników i tworzyć logi audytowe (audit logs). Rozwiązanie jest w pełni zgodne z regulacjami takimi jak RODO (GDPR), HIPAA i PCI DSS.
Keycloak pozwala integrować tożsamości użytkowników z różnych źródeł, pomagając organizacjom zarządzać nimi w różnych domenach i realmach. Co więcej, umożliwia firmom ustanowienie szczegółowych polityk kontroli dostępu w oparciu o atrybuty, role i uprawnienia. Dzięki temu możesz mieć pewność, że użytkownicy mają właściwy poziom dostępu do zasobów.
Dzięki SSO użytkownicy mogą logować się do wielu aplikacji przy użyciu tylko jednego zestawu danych uwierzytelniających, co eliminuje kłopoty z zarządzaniem wieloma loginami. Keycloak zawiera również funkcje samodzielnej rejestracji użytkowników, resetowania haseł i zarządzania profilami – wszystko, co niezbędne do założenia i obsługi konta.
Czasami firmy korzystają już z systemu IAM, ale chcą przejść na opcję open-source (taką jak Keycloak). Może to być motywowane niezadowoleniem z istniejącego oprogramowania, chęcią uniknięcia wysokich opłat licencyjnych za produkt komercyjny (szczególnie problematyczne, gdy firma szybko rośnie) lub koniecznością odejścia od systemu typu legacy.
Użyliśmy Keycloaka podczas projektu dla dużej europejskiej firmy budowlanej, dla której stworzyliśmy kilka systemów – self-care, administracyjny oraz różne mikroserwisy – używanych zarówno przez pracowników firmy, jak i partnerów zewnętrznych (wykonawców).
Zdecydowaliśmy się na Keycloaka z kilku powodów:
Nasza implementacja Keycloaka działa w następujący sposób: zbudowaliśmy obraz Dockerowy Keycloaka, który działa na Kubernetesie. Publiczne API Keycloaka jest widoczne dla „świata” (tj. wszystkich użytkowników znających system), podczas gdy API administracyjne jest ukryte i dostępne tylko w sieci wewnętrznej.
Musieliśmy napisać kilka niestandardowych rozszerzeń i wdrożyliśmy Configuration as Code (CaC). Dzięki temu zmiany w konfiguracji są implementowane automatycznie – administratorzy nie muszą wprowadzać ich w każdym środowisku z osobna. Użyliśmy do tego narzędzia keycloak-config-cli, dostępnego na GitHubie.
Efekt końcowy? Użytkownicy wielu systemów i mikroserwisów firmy mogą teraz logować się za pomocą systemu Keycloak SSO.
Zastrzeżenie: Przedstawione tutaj ustawienia nigdy nie powinny być stosowane w prawdziwej aplikacji. Naszym celem było pokazanie podstawowych opcji konfiguracyjnych i zilustrowanie łatwości obsługi rozwiązania. Z tego powodu zastosowaliśmy liczne uproszczenia (takie jak użycie „admin” jako domyślnego hasła do panelu administratora itp.). Jeśli chcesz skonfigurować Keycloak do pracy ze złożonym i ważnym systemem, zachęcamy do zapoznania się z oficjalną dokumentacją lub kontaktu z nami pod adresem hello@pretius.com – chętnie pomożemy w Twoim projekcie Keycloak.
Najpierw pobierz obraz Keycloak dla Dockera z oficjalnej strony i uruchom go w swoim lokalnym środowisku. Możesz to zrobić szybko za pomocą następującej komendy w CLI:
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:23.0.4 start-dev
Kolejnym krokiem jest konfiguracja Keycloak. Przejdź pod adres http://localhost:8080, gdzie zobaczysz stronę powitalną. Zawiera ona linki umożliwiające wykonanie podstawowych operacji. Kliknij ten, który otwiera konsolę administracyjną (obszar zaznaczony na czerwono na zrzucie ekranu poniżej).
Wprowadź tutaj domyślny login i hasło do konta administratora. Jeśli użyłeś komendy CLI podanej na początku, wpisz „admin” w obu polach.
Następnym krokiem jest utworzenie nowego realmu. Aby to zrobić, kliknij w pole w lewym górnym rogu aplikacji (prawdopodobnie będzie nazywać się „master”) i kliknij Create realm.
Na potrzeby naszego artykułu nazwaliśmy nasz realm „Pretius-Keycloak-FE-Integration”, ale nazwa nie jest istotna – możesz wybrać dowolną.
Po utworzeniu nowego realmu, skonfiguruj go za pomocą ustawień dostępnych w Realm Settings. Nie musisz wprowadzać zmian, ale ważne jest dodanie nowego klienta (client), którym będzie aplikacja, z którą chcesz używać Keycloaka. Przejdź do zakładki Clients i wybierz Create client.
Następnie określ Client type (zostawiliśmy domyślny) oraz Client ID. Możesz również dodać nazwę i/lub opis oraz sprawić, by klient był zawsze wyświetlany w UI.
Zakładka Compatibility config pozwala przełączać uwierzytelnianie i autoryzację klienta oraz definiować flow uwierzytelniania. Użyliśmy tych ustawień do celów demonstracyjnych:
Możesz również zmienić niektóre Login settings. W tych polach możesz podać poprawne URI przekierowań (redirect URIs), które będą dozwolone po wylogowaniu użytkowników. Umieściliśmy tam gwiazdki nie bez powodu – mogą one zastąpić dowolny ciąg znaków, więc możliwe jest przekierowanie dosłownie wszędzie. Oczywiście niekoniecznie chcesz na to pozwalać – określ więc adresy URL zgodnie ze swoimi potrzebami i kliknij przycisk Save, aby zapisać zmiany.
Pozostaje już tylko stworzyć użytkownika, który pozwoli na zalogowanie się do Keycloaka z poziomu aplikacji. Przejdź do zakładki Users i kliknij Add user
Wypełnij informacje o użytkowniku w dowolny sposób, na przykład tak:
Potwierdź dane przyciskiem Create. Konieczne jest również nadanie użytkownikowi hasła w zakładce Credentials – naciśnij przycisk Set password.
I to właściwie tyle – wstępna konfiguracja zakończona. Po zintegrowaniu aplikacji z Keycloakiem (nie będziemy opisywać tego kroku tutaj, gdyż szczegóły mogą się różnić, ale opisaliśmy przykładową integrację Keycloak-Angular w osobnym artykule), możesz użyć stworzonego użytkownika do uwierzytelnienia się przez Keycloak.
Oto kilka zaawansowanych wskazówek od naszych utalentowanych deweloperów, które powinny pomóc Ci wdrożyć Keycloak i skonfigurować Single Sign-On w Twoim projekcie bez większych problemów:
Chcielibyśmy również przedstawić oszacowanie kosztów projektu wdrożenia Keycloak. Nasze szacunki opierają się na przykładzie infrastruktury chmurowej wykorzystującej technologię Microsoft Azure, jednak koszty dla innych platform (np. AWS) są bardzo zbliżone.
Nasza przykładowa infrastruktura zakłada połączenie zarówno z aplikacjami webowymi organizacji, jak i aplikacjami on-premise. Oczywiście parametry, zasoby i usługi chmurowe są jedynie szacunkowe. Ostatecznie koszty będą inne dla każdej organizacji, w zależności od jej potrzeb i specyfiki (np. użycia innego rodzaju bazy danych).
Ile kosztują te wszystkie elementy? To zależy od środowiska (produkcyjne lub dev/test) i wybranej subskrypcji. Przykładowo, w modelu płatności „pay as you go”, szacowany koszt wynosi około 625,63 USD miesięcznie. Można go jednak znacznie obniżyć, wybierając rezerwację na rok lub 3 lata.
Jeśli chcesz sprawdzić wszystkie szczegóły, przygotowaliśmy Keycloak Cost Estimation Cheat Sheet – łatwy w użyciu plik PDF, który pomoże Ci oszacować koszty w przypadku Twojej firmy. Korzystamy z niego na co dzień w Pretius przy wycenach projektów IAM/SSO dla naszych klientów. Możesz pobrać ten arkusz za darmo, korzystając z poniższego formularza.
Keycloak to świetna opcja IAM – pomaga optymalizować koszty, skraca time-to-market i zapewnia bezpieczeństwo na najwyższym poziomie w oparciu o sprawdzone w boju rozwiązanie. Narzędzie jest elastyczne (szczególnie jeśli masz już Javę w swoim stosie technologicznym), skalowalne i stale aktualizowane o nowe funkcje. Z tym wyborem nie można się pomylić, a w wielu przypadkach jest to znacznie lepsza decyzja niż inwestowanie w kosztowny development dedykowanego oprogramowania.
Potrzebujesz pomocy we wdrożeniu Keycloaka? A może nie wiesz, jak poprawnie skonfigurować Single Sign-On? Skontaktuj się z nami pod adresem hello@pretius.com lub skorzystaj z poniższego formularza kontaktowego. Mamy ogromne doświadczenie w tworzeniu niestandardowych rozwiązań IAM opartych na Keycloak i podczas bezpłatnych konsultacji możemy pokazać Ci praktyczne demo aplikacji zintegrowanej z tym systemem. Oczekuj naszej odpowiedzi w ciągu 48 godzin.
Jeśli jesteś zainteresowany współpracą z nami, możesz również pobrać i wypełnić nasz Keycloak Valuation Form – pomoże Ci on przygotować się do wdrożenia Keycloaka i ułatwi nam lepsze zrozumienie zakresu oraz celów Twojego projektu.
Oto kilka najczęściej zadawanych pytań dotyczących Keycloak Single Sign-On.
Keycloak to otwartoźródłowe rozwiązanie programowe, które zapewnia dostęp Single Sign-On do aplikacji i usług. Pozwala użytkownikom uwierzytelnić się raz i uzyskać dostęp do wielu aplikacji bez ponownego wprowadzania danych uwierzytelniających.
W momencie pisania tego artykułu najnowszą wersją Keycloaka jest 26.1.4, wydana w marcu 2025 roku.
Platforma oferuje wiele przydatnych funkcji, w tym role i podgrupy, centralne zarządzanie administracją, impersonację, zaawansowane polityki haseł oraz wtyczki.
Keycloak jest łatwy w konfiguracji i obsłudze; można go wdrożyć on-premise lub korzystać z platformy chmurowej (AWS, Azure itp.), co umożliwia zarządzanie tożsamością i dostępem w chmurze. Możesz go zintegrować z istniejącymi aplikacjami i systemami. Keycloak zapewnia bezpieczny sposób uwierzytelniania użytkowników i pozwala im na dostęp do różnych zasobów oraz usług przy użyciu jednego zestawu poświadczeń.
Keycloak przechowuje i zarządza informacjami o użytkownikach, uprawnieniami i innymi danymi konfiguracyjnymi, a także informacjami dotyczącymi metod uwierzytelniania używanych dla każdej aplikacji. Rozwiązanie obsługuje szereg protokołów uwierzytelniania, w tym OpenID Connect, SAML i OAuth2.
Gdy użytkownik zaloguje się do serwera Keycloak, zostaje uwierzytelniony, a jego tożsamość zweryfikowana. Tożsamość użytkownika jest następnie mapowana na aplikacje, do których ma on dostęp. System autoryzacji Keycloaka pozwala administratorom definiować, do jakich aplikacji poszczególni użytkownicy mają dostęp i co mogą robić w ramach tych systemów.