Keycloak – prosta integracja ze Spring Boot

integracja_keycloaka_ze_spring_boot


Poprzedni wpis dotyczący Keycloaka zakończyliśmy na jego budowie. Skoro już znamy budowę Keycloaka, wiemy jak go zainstalować, pora na integrację z backendem naszej aplikacji. Słowo „prosta” użyte w tytule oznaczania najprostszą formę integracji Keycloaka ze Springiem, zaawansowana pojawi się niebawem.

Instalacja i konfiguracja Keycloaka

Pierwszą rzeczą jaką musimy zrobić to przygotować serwer Keycloak, korzystając z docker-compose który znajdziemy w poprzednim wpisie. Następnie wchodzimy na stronę  http://localhost:8080/auth/admin/ logując się wcześniej ustawionymi danymi poprzez zmienne środowiskowe.

Fragment docker-compose.yml:

environment:
  - "KEYCLOAK_USER=admin"
  - "KEYCLOAK_PASSWORD=admin" 

Gdy udało się nam zalogować do panelu administratora, powinny się nam ukazać ustawienia realmu Master. W komercyjnym świecie musimy stworzyć własny realm, gdyż master jest domyślnym, zawierającym szereg administracyjnych elementów.
Klikamy w lewym górnym rogu na Master, a następnie Add realm

Wpisujemy dowlona nazwe reprezentująca zbiór naszych aplikacji (nazwe projektu)

Oczywiście możemy importować konfiguracje z już istniejącego realmu i na bazie niego tworzyć. My klikamy Create.

Poprawne stworzenie realma powinno sie zakończyć ukazaniem strony administracyjnej tego Realmu:

Kolejną czynnością jest dodanie obiektu client, który reprezentuje naszą aplikacje (webowa, mobilna itd), w tym celu musimy przejść do zakładki Clients.

Nastepnie w prawym rogu, klikamy create i wpisujemy nazwę naszej aplikacji.

Zostawiamy client-protocol „openid-connect” i klikamy save. Po poprawnym wykonaniu pojawi nam się strona administracyjna tego klienta.

Ustawiamy Access Type na Confidential. Aby bowiem appka springowa mogła korzystać z tego clienta, musi posiadać specjalny secret. 

Service Accounts Enabled ustawiamy na ON. To pozwala appce springowej na pobranie access tokenu dla swoich celów.

Ustawienie Authorization Enabled na ON pozwala na używanie przez aplikację Policy Decision Point keycloaka, czyli definiowanie polityk i uprawnień oraz ich przetwarzanie.