AuthMe Reloaded - logowanie i rejestracja na serwerze
AuthMe Reloaded to standardowy plugin autoryzacyjny na serwerach Minecraft działających w trybie offline-mode. Wymusza rejestrację i logowanie, chroni konta przed przejęciem, obsługuje MySQL, bcrypt, captcha oraz odzyskiwanie hasła przez email.
Co to jest AuthMe Reloaded
AuthMe Reloaded to plugin autoryzacyjny dla serwerów Minecraft działających w trybie offline-mode (tzw. non-premium). Kiedy serwer ma ustawione online-mode=false w pliku server.properties, Mojang nie weryfikuje tożsamości gracza — każdy może dołączyć podając dowolny nick, w tym nick kogoś innego. AuthMe rozwiązuje ten problem, wymuszając rejestrację hasłem przy pierwszym logowaniu i weryfikację przy każdym kolejnym.
Bez AuthMe na serwerze offline-mode każdy może podać nick admina i uzyskać dostęp do jego uprawnień. To krytyczna luka bezpieczeństwa. AuthMe blokuje gracza natychmiast po dołączeniu: nie może się poruszać, pisać na czacie, otwierać ekwipunku ani wchodzić w interakcje ze światem, dopóki się nie zaloguje. Po pomyślnym /login lub /register sesja jest aktywna — jeśli gracz wróci z tego samego adresu IP w ciągu ustawionego czasu, może zostać zalogowany automatycznie bez wpisywania hasła.
Plugin jest rozwijany od 2013 roku, a jego obecna wersja — Reloaded — to gruntownie przepisana edycja z aktywnym wsparciem. Dostępny za darmo na SpigotMC oraz GitHub. Obsługuje Spigot, Paper i Purpur w wersjach od 1.7.10 do 1.21.x.
Jeśli prowadzisz serwer premium (online-mode=true), AuthMe jest zbędny — Mojang weryfikuje tożsamość graczy samodzielnie i nie należy go instalować, bo może powodować konflikty.
Instalacja
Instalacja jest standardowa dla pluginów Bukkit/Spigot:
- Pobierz najnowszy plik
.jarze strony SpigotMC lub z GitHub Releases. - Wgraj plik do katalogu
plugins/na serwerze. - Uruchom lub zrestartuj serwer.
- AuthMe wygeneruje katalog
plugins/AuthMe/z plikiemconfig.yml. - Skonfiguruj
config.ymlwedług potrzeb (patrz niżej), a następnie przeładuj plugin komendą/authme reloadlub zrestartuj serwer.
AuthMe nie wymaga żadnych zależności. Opcjonalnie korzysta z EssentialsX do integracji (np. blokowania wiadomości prywatnych przed zalogowaniem) oraz z LuckPerms do zarządzania uprawnieniami do komend admina.
Po instalacji i starcie serwera sprawdź logi, czy nie ma błędów. Typowe problemy przy pierwszym uruchomieniu to brakujący sterownik JDBC dla MySQL (gdy wybierzesz bazę MySQL zamiast domyślnego SQLite) lub błąd uprawnień do zapisu w katalogu plugins/.
Konfiguracja config.yml
Plik plugins/AuthMe/config.yml jest rozbudowany, ale kluczowe sekcje, które należy dostosować przy nowej instalacji, to:
# Ustawienia rejestracji
settings:
registration:
enabled: true
# Czas (w sekundach) na rejestrację po dołączeniu - po nim gracz jest wykopany
timeout: 30
# Czy wymagać potwierdzenia hasła przy /register haslo haslo
enablePasswordConfirmation: true
# Sesje IP - jak długo gracz pozostaje zalogowany z tego samego IP
sessions:
enabled: true
# Czas sesji w minutach (0 = wyłączone)
timeout: 0
restrictions:
# Zablokuj te akcje przed zalogowaniem
allowMovement: false
allowChat: false
allowCommands: []
# Lista komend dozwolonych przed zalogowaniem (np. /register, /login)
# Maksymalna liczba kont z jednego IP
maxLoginPerIp: 1
maxRegisterPerIp: 1
# Komunikaty wyświetlane graczowi
messages:
# Język wiadomości (pl dostępny w plugins/AuthMe/messages/)
language: pl Sekcja settings.restrictions jest kluczowa — definiuje co gracz może robić zanim się zaloguje. Domyślnie AuthMe blokuje ruch, czat i wszystkie komendy poza /login i /register. Możesz rozszerzyć listę dozwolonych komend o np. /help czy /register (jest domyślnie dodana automatycznie).
# Hashowanie haseł
security:
passwordHash: BCRYPT
bcrypt:
log2Rounds: 10 # wyższy = wolniejszy, ale bezpieczniejszy. Zalecane: 10-12
# Baza danych
DataSource:
backend: MYSQL # lub SQLITE
mySQLHost: localhost
mySQLPort: 3306
mySQLDatabase: authme
mySQLUsername: authme_user
mySQLPassword: twoje_haslo_do_bazy Po każdej zmianie konfiguracji użyj /authme reload zamiast restartować cały serwer — plugin przeładuje ustawienia bez przerwy w działaniu.
Komendy gracza i admina
AuthMe dostarcza dwie grupy komend: dla graczy (dostępne bez uprawnień) i dla adminów (wymagające węzła uprawnień).
Komendy gracza
| Komenda | Opis |
|---|---|
/register <haslo> <haslo> | Rejestracja konta — wymagana przy pierwszym dołączeniu |
/login <haslo> | Logowanie przy każdym kolejnym dołączeniu |
/changepassword <stare> <nowe> | Zmiana własnego hasła (wymaga podania starego) |
/logout | Wylogowanie bez rozłączania — przy kolejnym ruchu poprosi o hasło |
/email add <email> <email> | Dodanie adresu email do konta (potrzebne do odzyskiwania hasła) |
/email change <stary> <nowy> | Zmiana adresu email przypisanego do konta |
/email recovery <email> | Wysłanie nowego hasła na podany adres email |
/unregister <haslo> | Usunięcie własnego konta z bazy (gracz musi znać swoje hasło) |
Komendy administracyjne
| Komenda | Opis | Uprawnienie |
|---|---|---|
/authme register <nick> <haslo> | Rejestracja konta dla innego gracza | authme.admin.register |
/authme unregister <nick> | Usunięcie konta gracza z bazy | authme.admin.unregister |
/authme changepassword <nick> <nowe> | Zmiana hasła innemu graczowi (bez znajomości starego) | authme.admin.changepassword |
/authme forcelogin <nick> | Wymuszenie zalogowania gracza bez podawania hasła | authme.admin.forcelogin |
/authme accounts <nick> | Lista wszystkich nicków zarejestrowanych z danego IP | authme.admin.accounts |
/authme reload | Przeładowanie konfiguracji bez restartu serwera | authme.admin.reload |
/authme purge <dni> | Usunięcie kont nieaktywnych przez podaną liczbę dni | authme.admin.purge |
/authme getemail <nick> | Sprawdzenie emaila przypisanego do konta gracza | authme.admin.getemail |
Uprawnienia do komend administracyjnych przydzielaj przez LuckPerms. Nigdy nie dawaj graczom authme.admin.* — daje dostęp do wszystkich komend adminów, w tym zmiany cudzych haseł.
Baza danych - SQLite vs MySQL
AuthMe obsługuje dwa backendy bazodanowe: SQLite (domyślny) i MySQL. Wybór zależy od skali serwera i planów na integrację z zewnętrznymi aplikacjami.
SQLite
SQLite to plik lokalny plugins/AuthMe/authme.db. Nie wymaga konfiguracji ani zewnętrznego serwera bazy danych. Sprawdza się na małych serwerach do kilkudziesięciu graczy. Wadą jest brak obsługi równoległych zapytań — przy intensywnym ruchu może powodować blokady zapisu. Nie nadaje się do integracji z forum ani stroną internetową, bo inne aplikacje nie mogą łatwo odczytać danych z pliku SQLite działającego serwera.
MySQL
MySQL (lub MariaDB) to zewnętrzny serwer bazy danych. Wymagana konfiguracja w config.yml:
DataSource:
backend: MYSQL
mySQLHost: localhost # adres serwera MySQL
mySQLPort: 3306
mySQLDatabase: authme # nazwa bazy danych (musi istnieć)
mySQLUsername: authme_user
mySQLPassword: silne_haslo_bazy
mySQLTablename: authme # nazwa tabeli
mySQLColumnName: username
mySQLColumnPassword: password
mySQLColumnIp: ip
mySQLColumnLastlogin: lastlogin
mySQLColumnSalt: salt
mySQLColumnGroup: groupname
mySQLColumnEmail: email MySQL jest wymaganym wyborem gdy:
- Serwer ma więcej niż 50 graczy online jednocześnie
- Planujesz integrację z forum (phpBB, XenForo, MyBB)
- Chcesz udostępnić panel statystyk lub rejestracji przez stronę www
- Uruchamiasz kilka serwerów w sieci BungeeCord i chcesz współdzielić konta
Przy sieci BungeeCord wszystkie serwery mogą korzystać z tej samej bazy MySQL — gracz rejestruje się raz i ma dostęp do całej sieci. AuthMe obsługuje tryb bungeecord: true w konfiguracji, który wysyła informację o zalogowaniu przez BungeeCord do wszystkich połączonych serwerów.
Hashowanie haseł
AuthMe nie przechowuje haseł w postaci jawnej — zapisuje ich skrót kryptograficzny (hash). Gdy gracz loguje się hasłem, plugin hashuje podany ciąg i porównuje wynik z zapisanym hashem. Nawet jeśli ktoś uzyska dostęp do bazy danych, nie pozna oryginalnych haseł.
Dostępne algorytmy hashowania w AuthMe:
| Algorytm | Bezpieczeństwo | Szybkość | Rekomendacja |
|---|---|---|---|
BCRYPT | Bardzo wysokie | Wolny (celowo) | Zalecany — domyślny wybór |
ARGON2 | Najwyższe | Bardzo wolny | Najlepszy — wymaga Java 9+ |
SHA256 | Średnie | Szybki | Nie zalecany dla nowych serwerów |
MD5 | Niskie | Bardzo szybki | Odradzany — przestarzały |
PLAINTEXT | Brak | Natychmiastowy | Nigdy nie używaj |
Wybór algorytmu konfiguruje się w sekcji security.passwordHash. Dla bcrypt dodatkowo ustaw parametr log2Rounds — jego wartość określa koszt obliczeniowy (im wyższy, tym wolniej atakujący może sprawdzać hasła w przypadku wycieku bazy). Zalecana wartość to 10-12.
security:
passwordHash: BCRYPT
bcrypt:
log2Rounds: 10 Jeśli migrujesz serwer z innym algorytmem (np. SHA256) i chcesz przejść na bcrypt, AuthMe obsługuje migrację przez komendę /authme converter. Konwertuje istniejące hashe do nowego formatu przy kolejnym logowaniu każdego gracza — transparentnie, bez konieczności zmiany hasła przez graczy.
Zabezpieczenia - captcha, anti-bot i limity IP
AuthMe zawiera kilka mechanizmów ochrony przed automatycznymi atakami:
Captcha
Po określonej liczbie błędnych prób logowania AuthMe może wymagać rozwiązania prostej captchy tekstowej przed kolejną próbą. Konfiguracja:
security:
captcha:
useCaptcha: true
# Liczba błędnych logowań przed wyświetleniem captchy
maxLoginTry: 5
captchaLength: 5 Captcha wyświetla się graczowi jako losowy ciąg znaków w chacie (np. "Wpisz: Xk3mP"), który musi przepisać komendą /captcha Xk3mP. To prosta, ale skuteczna bariera dla botów.
Limity IP
Kluczowe ustawienia ograniczające nadużycia z jednego adresu IP:
settings:
restrictions:
# Maksymalna liczba zarejestrowanych kont z jednego IP
maxRegisterPerIp: 1
# Maksymalna liczba jednoczesnych połączeń z jednego IP
maxLoginPerIp: 1
# Blokada IP po przekroczeniu limitu prób (minuty)
tempbanLength: 30
maxTries: 10 Na serwerach, gdzie gracze mogą korzystać z NAT (np. szkolnego), warto zwiększyć maxRegisterPerIp do 2-3, bo kilka osób może dzielić jeden publiczny adres IP.
Timeout i auto-kick
Gracz, który dołączy i nie zaloguje się w ustalonym czasie, zostaje wyrzucony z serwera:
settings:
registration:
# Czas na rejestrację/logowanie w sekundach, po którym gracz jest wykopany
timeout: 30 Wartość 30 sekund to rozsądny kompromis — wystarczy czasu na wpisanie hasła, ale nie blokuje slotu serwera graczom AFK na ekranie logowania.
Ochrona przed przejęciem nicku
AuthMe domyślnie zablokuje gracza, który dołączy z nickiem już zarejestrowanym w bazie, i poprosi go o hasło. Jeśli gracz nie zna hasła — nie wejdzie. To podstawowa ochrona przed podszywaniem się pod innych graczy, dla której AuthMe został stworzony.
Odzyskiwanie hasła przez email
AuthMe obsługuje wysyłanie nowego hasła na adres email w przypadku, gdy gracz go zapomni. Funkcja wymaga skonfigurowania serwera SMTP.
Email:
senderEmail: noreply@twojserwer.pl
smtpHost: smtp.gmail.com
smtpPort: 465
emailAccount: noreply@twojserwer.pl
emailPassword: haslo_konta_email
emailSMTP: true
useSMTP: true
# Szablon maila z nowym hasłem
mailSubject: "Odzyskiwanie hasła - TwójSerwer" Przepływ odzyskiwania hasła wygląda następująco:
- Gracz dołącza na serwer i widzi komunikat logowania.
- Wpisuje
/email recovery swoj@email.pl. - AuthMe generuje losowe hasło tymczasowe i wysyła je na podany adres.
- Gracz loguje się tymczasowym hasłem przez
/login haslo_tymczasowe. - Gracz zmienia hasło na własne przez
/changepassword stare nowe.
Aby funkcja działała, gracz musi wcześniej przypisać email do konta komendą /email add adres@email.pl adres@email.pl. Dobrą praktyką jest przypomnienie o tym w wiadomości powitalnej serwera lub w regulaminie.
Przy konfiguracji Gmail użyj hasła aplikacji (App Password) zamiast głównego hasła konta, jeśli masz włączone uwierzytelnianie dwuskładnikowe. Hasło aplikacji generujesz w ustawieniach bezpieczeństwa konta Google.
Integracja z forum i stroną internetową
Jedną z głównych zalet AuthMe jest możliwość synchronizacji kont graczy z zewnętrznymi systemami. Gracze mogą używać tego samego hasła w grze i na forum serwera.
Integracja z forum phpBB3
AuthMe obsługuje natywnie phpBB3 przez klasę hashowania PHPBB3. Po jej wybraniu w konfiguracji AuthMe zaczyna hashować hasła w tym samym formacie co phpBB — gracz rejestruje się na forum i może wejść do gry tym samym hasłem, albo odwrotnie.
security:
passwordHash: PHPBB3 Wymagane jest, aby oba systemy korzystały z tej samej bazy MySQL — tabela użytkowników forum musi być dostępna dla AuthMe. Konfiguracja nazw kolumn w sekcji DataSource pozwala wskazać dokładnie te same kolumny co forum.
Obsługiwane systemy forum
- phpBB3 — natywna obsługa, algorytm PHPBB3
- MyBB — algorytm MYBB
- SMF — algorytm SMF11 lub SMF2
- XenForo — algorytm XENFORO
- WordPress — algorytm WORDPRESS
- Joomla — algorytm JOOMLA
Panel rejestracji przez stronę www
Jeśli korzystasz z MySQL, możesz zbudować prosty panel na stronie, który wstawia rekord do tabeli AuthMe. Wymagane kolumny to username, password (zahashowane bcrypt), ip, lastlogin, regdate i regip. Gracz rejestruje się na stronie i może od razu wejść na serwer bez komendy /register.
Integracja z BungeeCord
Na sieci serwerów z BungeeCord wszystkie serwery powinny korzystać z tej samej bazy MySQL i mieć włączony tryb BungeeCord w AuthMe:
Hooks:
bungeecord: true Po zalogowaniu na serwerze lobby, gracz może przejść na inne serwery sieci bez ponownego logowania — informacja o sesji jest przekazywana przez BungeeCord.
Porady dla adminów
- Używaj MySQL zamiast SQLite - na serwerze z więcej niż 20 graczami SQLite może spowalniać logowanie. MySQL jest szybszy i bezpieczniejszy pod kątem spójności danych.
- Wybierz bcrypt od razu - zmiana algorytmu hashowania po fakcie wymaga przeprowadzenia konwersji. Zacznij od bcrypt z log2Rounds=10 i nigdy nie będziesz musiał migrować.
- Ustaw limity IP - maxRegisterPerIp=1 i maxLoginPerIp=1 to podstawa ochrony przed masową rejestracją botami.
- Skonfiguruj email recovery - gracze zapominają hasła. Bez emaila jedyną opcją jest ręczna interwencja admina przez
/authme changepassword. To marnowanie czasu, który możesz spędzić na rozwijaniu serwera. - Regularnie czyść nieaktywne konta - komenda
/authme purge 365usuwa konta nieaktywne od roku. Mniejsza baza = szybsze zapytania = płynniejsze logowanie. - Nie dawaj graczom authme.admin.* - to uprawnienie daje dostęp do
/authme changepassword, co pozwala zmienić hasło dowolnemu graczowi. Przydzielaj tylko konkretne węzły uprawnień przez LuckPerms. - Przetestuj timeout - wartość 30 sekund to minimum. Na serwerach z grafiką ładującą się długo (np. modpacki) zwiększ do 60-90 sekund, żeby gracz zdążył się zalogować zanim zostanie wyrzucony.
- Monitoruj logi AuthMe - plugin loguje nieudane próby logowania do
plugins/AuthMe/logs/. Nagły wzrost prób z jednego IP to sygnał ataku brute-force — zablokuj IP na firewallu.
Powiązane artykuły: EssentialsX (komendy podstawowe), LuckPerms (uprawnienia), katalog wszystkich pluginów.