Autentykacja i autoryzacja

PosnetServer od wersji 5.1 został rozbudowany o autentykację i autoryzację requestów. Mechanizm pozwala na uwierzytelnianie (autentykację) każdego requestu loginem i hasłem oraz następnie autoryzację (upoważnenie) do wybranego RESTpointu. Przykładowo, jeśli chcemy aby aplikacja monitorująca serwisy w naszej infrastrukturze nie miała uprawnień do wystawiania paragonów, wystarczy że przypiszemy jej uprawnienia do GET /status oraz GET /devicestatus.

Aktywacja

Moduł autentykacji i autoryzacji jest domyślnie wyłączony. Aby go włączyć należy w pierwszym kroku utworzyć login administratora. W tym celu wystarczy uruchomić skrypt docs/create_users.sh. Przykładowy wynik uruchomienia skryptu może wyglądać następująco:

Skrypt tworzy trzech użytkowników:

  • admin – login administratora mający dostęp do wszystkich funkcji PosnetServer’a
  • monitoring – login posiadający uprawnienia jedynie do monitoringu serwisu i drukakrki
  • cashier – login posiadający uprawnienia do wystawiania paragonów i faktur

Skrypt generuje losowe hasła dla loginów, stąd należy je zapisać i zachować, gdyż z poziomu API nie ma możliwości ich podglądu. Dla każdego użytkownika generowany jest unikalny UUID, z pomocą którego możemy go aktualizować.

W tym momencie należy w pliku config.json ustawić parametr auth.active na true i zrestartować serwis. Od tego momentu każdy request będzie uwierzytelnianiy. Przykładowo, aby wysłać za pomocą curl request, należy podać login hasło w następujący sposób:

KONFIGURACJA

Konfiguracja modułu znajduje się w pliku config.json w sekcji “auth”.

  • active – true/false. Określa czy moduł jest włączony czy też nie,
  • secret – losowy ciąg znaków używany do szyfrowania pliku z loginami i hasłami
  • users_file – ścieżka do pliku w którym PosnetServer przechowuje utworzone loginy i hasła.

Każda zmiana w pliku config.json wymaga zrestartowania PosnetServer’a

SCOPE (autoryzacja)

Tworząc użytkownika podajemy jego nazwę, login, hasło oraz scope. Scope określa do jakich funkcji PosnetServer’a użytkownik ma mieć dostęp. Format tego pola jest następujący:

<metoda HTTP>:<wyrażenie regularne>;<metoda HTTP>:<wyrażenie regularne>;<metoda HTTP>:<wyrażenie regularne>;

Średniki (;) oddzielają kolejne sekwencje. W każdej sekwencji dwukropek (:) oddziela typ requestu HTTP, czyli POST,GET,DELETE,PUT itd. od wyrażenia regularnego określającego do jakich RESTpointów użytkownik ma mieć dostęp. Przykładowo jeśli użytkownik ma mieć uprawnienia do wołania jedynie metody GET /status, należy jego scope zapisać w następujący sposób:

A jeśli dodatkowo ma mieć uprawnia do wołania heartbeat’u:

Więcej na temat samych wyrażeń regularnych można znaleźć przykładowo tu: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions

Pobierz wersję 5.x

Przejdź do artykułu: “Instalacja PosnetServer“.

Share This

What's your reaction?
0Smile0Lol0Wow0Love0Sad0Angry