Keycloak i Spring Boot

Keycloak – simple integration with 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” oznaczania najprostsza formę integracji Keycloaka ze Springiem, zaawansowana pojawi się niebawem.

Pierwszą rzeczą jaką musimy zrobić to przygotować serwer Keycloak, korzystając z docker-compose który znajdziemy na poprzednim wpisieNastę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 komercjnym świecie musimy stworzyć własny realm, gdyż master jest domyślnym, zawierający szereg administracjnych rzeczy.
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śnie możemy importować konfiguracje z już istniejącego realmu i na bazie niego tworzyc. Klikamy Create

Poprawne stworzenie realma powinno sie zakończyć stroną administracjna jego

Kolejną rzeczą 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 nazwe naszej aplikacji.

zostawiamy client-protocol „openid-connect” i klimamy save . Po poprawnym stworzeniu pojawi się na strona administracjna tego klienta


Ustawiamy Access Type na Confidential co daje nam to ze aby appka springowa mogła korzystać z tego clienta musi posiadać specjany secret. 

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

Authorization Enabled na ON co pozwala na uzywanie przez aplikacje Policy Decision Point keycloaka, czyli definiowanie polityk i uprawnien i ich przetwarzanie.