Aplikacja klienta w reactjs / angular oraz rest web api przy wykorzystaniu asp net core.
Chcę, aby zalogowany klient miał dostęp do pewnych akcji kontrolera.
Czego najlepiej użyć, aby osiągnąć ten cel?
Myślałem o json web tokenach z podziałem na role - wtedy administrator miałby pełen dostęp do modyfikacji zasobów. Jak sprawa wygląda z mechanizmem wylogowywania? Taki token jest przechowywany w local storage i przy wylogowaniu ulega niszczeniu, ale czy jeśli osoba trzecia zrobiła kopię, a czas ważności takiego tokena nie upłynął - czy można sobie wtedy jakoś z tym radzić?
Czy oprócz tokenów, można inaczej zabezpieczyć api? Podkreślę, że najbardziej mi chodzi o zabezpieczenie przed modyfikowaniem zasobów przez osoby trzecie.
Temat bezpieczeństwa jest dla mnie nowy, liczę na wyrozumiałość. Wielu z was zapewne miało już z czymś podobnym styczność, więc pytam.
0
1
A czy jeżeli osoba trzecia przechwyci hasło usera, to jak sobie z tym poradzić? Praktycznie jest trudno, no chyba, że np. 2FA / analizowanie logowań z adresów IP itd.
Generalnie user ma szerokie pole do popisu jeżeli chodzi o "oddanie" dostępu do konta.
Możesz np. ustawić krótką żywotność tokena i gromadzić tokeny które wystawiasz, a następnie usuwać przy wylogowaniu.
1
Nie ma idealnego rozwiązania. Jedną z opcji jest utrzymanie black listy "uniewaznionych" tokenow, ale gryzie się to z podstawowym celem użycia JWT. Najlepiej trzymać krótka ważność tokenow- niech klient w tle wykonuje co jakiś czas requesty o nowy token w czasie kiedy użytkownik jest zalogowany.