December 18, 2020

Konkurs Keycloak i wuwuzela

Niemalże w każdym projekcie potrzebujemy mieć bazę użytkowników do uwierzytelniania i autoryzacji. Zazwyczaj używany gotowych rozwiązań zamiast przechowywać konta użytkowników samemu. Jednym z takich rozwiązań jest Keycloak.

Keycloak przechowuje oraz zarządza kontami użytkowników w sposób bezpieczny. Daje nam też parę dodatkowych funkcji jak federacja użytkowników, pośrednictwo tożsamości wraz z logowaniem przez social media.

Konkurs dotyczy jednej z polityk bezpieczeństwa hasła. A konkretnie czarnej listy.

Pytanie konkursowe:

Dlaczego Keycloak odrzuca hasło “wuwuzela” jeśli czarna lista blokuje tylko hasło “admin”?

Keycloak jest napisany w Javie, a kod jest dostępny na githubie: https://github.com/keycloak/keycloak.git
Podpowiedź: Nie bójmy się zaglądać w cudzy kod


Pierwsze uruchomienie Keycloak’a jest naprawdę proste.

1. Ściągamy paczkę Keycloak’a ze strony

curl https://github.com/keycloak/keycloak/releases/download/12.0.0/keycloak-12.0.0.tar.gz | tar -xzf -  

2. Uruchamiamy Keycloaka

./keycloak-12.0.0/bin/standalone.sh

Na Windowsie uruchamiamy ./keycloak-12.0.0/bin/standalone.bat w PowerShell .

3. Konfigurujemy inicjalnego użytkownika

4. Tworzymy plik z czarną listą haseł i dodajemy do niego “admin”

echo "admin" > czarna_lista_hasel.txt

5. Ustaw czarną listę w Keycloaku

  • Przejdź do sekcji ‘Authentication’ => ‘Password Policy’
  • Kliknij “Add policy…” i dodaj politykę ‘Password Blacklist’
  • Ustaw jako wartość pełną ścieżkę do pliku np. D:\czarna_lista_hasel.txt
  • Zapisz zmiany klikając przycisk ‘Save’

6. Keycloak jest już skonfigurowany. Dodajmy nowego użytkownika.

  • Przejdź do sekcji “Users”
  • Kliknij “Add user”
  • Wpisz nazwę użytkownika w polu “Username”
  • Kliknij “Save”
  • Teraz pojawią się nowe zakładki.

7. Teraz możemy ustawić hasło w nowo dodanym użytkowniku.

  • Przejdź do zakładki “Credentials”
  • Tutaj możesz popróbować z różnymi hasłami
  • Wpisz hasło “wuwuzela” (w pola “Password”i “Password Confirmation”)
  • Kliknij “Set password”
  • Wyskoczy okienko, na którym też i kliknij “Set password”
  • Dostaniemy komunikat:
  • Error! Invalid password: password is blacklisted.”

Dlaczego?