POST /api/auth/login/
Utwórz uwierzytelnioną sesję.
Uwierzytelnianie: niewymagane.
Żądanie
Dział zatytułowany „Żądanie”{ "username": "tr100e", "passwordHash": "6c2a6f1f6f1edc1c6b7b5d3f7c6c8ce6e1f6bb3f4c1f9c0b0c2d5e8f7a9b3c4d"}Pola żądania
Dział zatytułowany „Pola żądania”| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
username | ciąg znaków | tak | Nazwa użytkownika; musi mieć wartość "tr100e" |
passwordHash | ciąg znaków | tak | Szesnastkowy skrót SHA-256 o długości 64 znaków |
Wzór skrótu
Dział zatytułowany „Wzór skrótu”SHA256(username + password + salt)gdzie wartość salt jest pobierana za pomocą GET /api/auth/salt/.
Ważne: wartość
saltjest jednorazowa i traci ważność po każdej próbie logowania. Przed ponowną próbą logowania należy pobrać nową wartość.
Wartość passwordHash jest najpierw porównywana z hasłem powerUser, następnie z hasłem user. Pole accessLevel w odpowiedzi odpowiada pasującemu hasłu.
Jeśli weryfikacja hasła interfejsu Web jest wyłączona za pomocą ustawienia webPwrPassEnable lub webUserPassEnable, urządzenie może przyznać odpowiedni poziom dostępu anonimowego bez żądania logowania. Poziom ten można ustalić za pomocą GET /api/auth/status/. Wyłączenie weryfikacji powerUser ma pierwszeństwo przed wyłączeniem weryfikacji user.
Odpowiedź 200
Dział zatytułowany „Odpowiedź 200”{ "authType": "Bearer", "token": "ej5k2pVg4Pd8yBdUqFPq8bdaStpeAZhyelpmkhtOivdK8r7E", "ttlSec": 60, "accessLevel": "user"}Pola odpowiedzi
Dział zatytułowany „Pola odpowiedzi”| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
authType | ciąg znaków | tak | Zawsze "Bearer" |
token | ciąg znaków | tak | 48-znakowy ciąg znaków ASCII [A-Za-z0-9] |
ttlSec | liczba | tak | Czas trwania sesji w sekundach |
accessLevel | ciąg znaków | tak | "user" lub "powerUser" |
Ochrona przed atakami siłowymi
Dział zatytułowany „Ochrona przed atakami siłowymi”- Jeden licznik nieudanych prób jest współdzielony przez wszystkie interfejsy (Web, klawiaturę i Modbus).
- Po
5nieudanych próbach wszystkie interfejsy zostają zablokowane na300sekund. - Licznik jest zerowany po
300sekundach bezczynności lub po pomyślnym logowaniu. - Stan jest przechowywany w rejestrach zapasowych RTC i zachowywany po wyłączeniu zasilania.
Odpowiedź 401 (nieprawidłowe hasło)
Dział zatytułowany „Odpowiedź 401 (nieprawidłowe hasło)”{ "error": "ERROR_UNAUTHORIZED", "message": "3 attempts left"}Odpowiedź 429 (aktywna blokada)
Dział zatytułowany „Odpowiedź 429 (aktywna blokada)”{ "error": "ERROR_LOCKED", "message": "Retry after 247 seconds"}