Hasło aplikacji WP
Konfiguracja
Token uwierzytelniający jest tworzony po to, aby n8n mógł bezpiecznie łączyć się z WordPress po API i wykonywać operacje na danych (odczyt i zapis) bez użycia głównego hasła użytkownika. W tym celu hasło aplikacji jest kodowane do formatu Authorization: Basic ... i zapisywane jako sekret w pliku secrets.env, skąd jest wczytywane przez kontener n8n jako zmienna środowiskowa.
Założenia konfiguracyjne:
- Dostępny jest panel administracyjny WordPress dla wskazanej domeny.
- Konto użytkownika WordPress ma uprawnienia do generowania haseł aplikacji.
- Plik sekretów n8n znajduje się w
/srv/docker/secrets/n8n/secrets.env.
Wygenerowanie hasła aplikacji w WordPress
Hasło aplikacji służy do uwierzytelniania po API bez użycia głównego hasła użytkownika.
- Logujemy się do panelu WordPress.
- Przechodzimy do Użytkownicy → Profil (lub Użytkownicy → Wszyscy użytkownicy → wybór użytkownika).
- Odnajdujemy sekcję Hasła aplikacji (Application Passwords).
- W polu nazwy wpisujemy identyfikator, np.
n8n. - Generujemy hasło i zapisujemy je w bezpiecznym miejscu.
Wymagany zapis hasła
Hasło aplikacji jest wyświetlane tylko raz po wygenerowaniu.
Zakodowanie danych do formatu Basic
Wartość w przykładzie nie jest hashem kryptograficznym. Jest to ciąg Base64, który powstaje z połączenia LOGIN:HASŁO_APLIKACJI i zakodowania tego tekstu.
- Ustalamy login użytkownika WordPress (ten sam, który będzie użyty do API).
- Łączymy login z hasłem aplikacji w formacie:
LOGIN:HASŁO_APLIKACJI
- Kodujemy do Base64 i budujemy wartość
Basic ...:
WP_USER="fulcro" # login użytkownika WordPress
WP_APP_PASS="xxxx xxxx xxxx xxxx" # hasło aplikacji (z zachowaniem spacji, jeśli WordPress je wyświetla)
B64=$(printf '%s' "${WP_USER}:${WP_APP_PASS}" | base64 -w 0)
echo "Basic ${B64}"
Wynik ma postać zgodną z przykładem:
Basic ZnVsY3JvOnhzaEkgSUdNVyA4NVp5IFEzWk0gYVp3NCBxbU16
Zbudowanie nazwy zmiennej środowiskowej
Prefiks WP_AUTH_ jest stały.
Dalsza część nazwy pochodzi z wartości domeny z kolumny Base URL w tabeli config (Baserow / NocoDB). W nazwie zmiennej:
- usuwamy protokół (
https:///http://) - bierzemy sam host (np.
domena.pl) - wszystkie znaki specjalne oraz kropki zamieniamy na podkreślenia
_ - zapisujemy wielkimi literami
Przykład:
- Base URL:
https://domena.pl - Zmienna:
WP_AUTH_DOMENA_PL
Polecenie pomocnicze do wyliczenia sufiksu z Base URL:
BASE_URL="https://domena.pl"
HOST=$(printf '%s' "$BASE_URL" | sed -E 's#^https?://##; s#/.*$##')
SUFFIX=$(printf '%s' "$HOST" | sed -E 's/[^A-Za-z0-9]+/_/g' | tr '[:lower:]' '[:upper:]')
echo "WP_AUTH_${SUFFIX}"
Dodanie wpisu do pliku /srv/docker/secrets/n8n/secrets.env
Plik służy do przechowywania sekretów, które są wczytywane przez n8n jako zmienne środowiskowe.
- Otwieramy plik:
sudo micro /srv/docker/secrets/n8n/secrets.env
- Dodajemy linię w wymaganym formacie:
WP_AUTH_DOMENA_PL="Basic ZnVsY3JvOnhzaEkgSUdNVyA4NVp5IFEzWk0gYVp3NCBxbU16"
- Zapisujemy plik.
Test wartości zmiennej
Test potwierdza, że wpis jest poprawnie sformatowany i zawiera zakodowany nagłówek Basic.
set -a
source /srv/docker/secrets/n8n/secrets.env
set +a
echo "$WP_AUTH_DOMENA_PL"
Uwagi utrzymaniowe
- Przy ponownym wygenerowaniu hasła aplikacji w WordPress należy zaktualizować odpowiadającą zmienną
WP_AUTH_<DOMENA>wsecrets.env. - Wartości
WP_AUTH_*nie zapisujemy w plikach Compose.