Skip to content

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.

  1. Logujemy się do panelu WordPress.
  2. Przechodzimy do Użytkownicy → Profil (lub Użytkownicy → Wszyscy użytkownicy → wybór użytkownika).
  3. Odnajdujemy sekcję Hasła aplikacji (Application Passwords).
  4. W polu nazwy wpisujemy identyfikator, np. n8n.
  5. 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.

  1. Ustalamy login użytkownika WordPress (ten sam, który będzie użyty do API).
  2. Łączymy login z hasłem aplikacji w formacie:
LOGIN:HASŁO_APLIKACJI
  1. 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:

terminal
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.

  1. Otwieramy plik:
sudo micro /srv/docker/secrets/n8n/secrets.env
  1. Dodajemy linię w wymaganym formacie:
secrets.env
WP_AUTH_DOMENA_PL="Basic ZnVsY3JvOnhzaEkgSUdNVyA4NVp5IFEzWk0gYVp3NCBxbU16"
  1. 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> w secrets.env.
  • Wartości WP_AUTH_* nie zapisujemy w plikach Compose.