qarminTwórca
3piorunówPotrzebuję stworzyć prosty system logowania do serwera i dostępu do jego zasobów, który oczywiście powinien być bezpieczny, ale w miarę łatwo implementowalny.
Jako że nigdy się w aplikacjach warstwą sieciową nie zajmowałem, to mam problem ze znalezieniem odpowiedniej metody.
Na internecie jest masa poradników jak to zrobić, ale oczywiście dotyczą różnych frameworków jak i różnych metod(tokeny, sesje), więc akurat nie wszystko kojarzę.
Z tego co wnioskuję logika powinna wyglądać w ten sposób:
* W bazie użytkownika zostaje dodane login + posolone hasło
* Użytkownik próbuje zalogować się do serwera, więc w zapytaniu przesyła w body login + hasło
* Serwer weryfikuje czy w bazie dane się znajdują, jeśli tak, to generuje token przy pomocy sekretnego klucza, w którym wewnątrz jest zapisany login użytkownika i czas wygaśnięcia i zwraca go użytkownikowi
* Użytkownik otrzymuje klucz i następnie do każdego zapytania api dodaje go do nagłówka Authentication
* Serwer po otrzymaniu zapytania, sprawdza nagłówek i odpakowywuje login i czas wygaśnięcia tokena, jeśli token jest ciągle ważny, to wykonuje daną operację, jeśli nie to zwraca błąd
* Serwer dla każdego zapytania wymaga tego tokena(oczywiście oprócz resta do logowania)
Czy moje rozumowanie jest poprawne?
@qarmin brzmi jak JWT. Domyślnie podpis JWT nie jest sprawdzany, więc twoja w tym głowa by to wymusić. Jak wspomniano wyżej; co złego jest w zwykłej sesji? Będzie najprościej
@qarmin najprostszy i najbezpieczniejszy dostęp do serwera to klient SSH, z zablokowanym dostępem innym niż przez klucz. Ale ty piszesz o aplikacji webowej. Jeśli chcesz zapewnić dostęp do serwera za pomoacą aplikacji webowej, to zasoby które udostępni serwer będą ograniczone tylko do tego co wystawia aplikacja za pomocą interfejsu. Musisz się zastanowić co chcesz udostępnić, a potem pomyśleć o sposobie realizacji bo aplikacja to jeden ze sposobów. Poza tym jest wiele różnych darmowych aplikacji serwerowych do różnego typu zasobów. Filmy, pliki, Smart Home i różnego rodzaju czujniki, konsolowe sesje dostępowe. W zasadzie to co potrzeba?















