
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
- Wejdź na http://localhost:8080/
- Na stronie ustaw nazwę i hasło inicjalnego użytkownika
- Kliknij teraz na “Administration Console” i się zaloguj
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?