Jak zabezpieczyć REST API w Spring

Jak zabezpieczyć REST API w Spring
discoStar
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Wlk. Brytania
  • Postów:92
0

Cześć, chcę zrobić zabezpieczenie do REST API. Backend (w Spring Boot) i front (w JS) będzie na tym samym serwerze.

Chcę, żeby dostęp do REST API miał tylko mój front i nikt inny. Pytanie jak to zabezpieczyć? Czytałem, że można użyć Spring Security (ale tutaj też są różne techniki, tak?)

BE
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 4 lata
  • Postów:35
2

możesz zabezpieczyć przez spring security
masz w sumie 4 mozliwosci:

-in memory config, tj. ustawiasz sobie w pamieci pojedynczego usera/admina
-config z jdbc
-config z ldap
-customowy przy implementacji interface UserDetails

OtoKamil
  • Rejestracja:ponad 10 lat
  • Ostatnio:około rok
  • Postów:143
1

JS to nakładka na calle restowe, które odpalasz z przeglądarki klienta, więc nie da się tego zabezpieczyć. Czy utworzyć jakiś klucz, czy będziesz wymagał jakiegoś hasła - user i tak widzi co wysyła do serwera więc może sobie tak samo strzelać z Postmana czy z czegokolwiek innego. Jak nie chcesz żeby ktoś Ci nie strzelał do API to nie wystawiaj API i zrób zwykłą apkę plującą htmlem.
Security możesz użyć jeśli user, który strzela do API musi mieć jakieś uprawienienia np. odczytu, musi być potwierdzony jakoś przez Twoją apkę ale wtedy i tak wysyłasz jakiś token, wiec tak samo mogę to zrobić postmanem.

edytowany 2x, ostatnio: OtoKamil
jarekr000000
Więc nie wiem co chciałeś napisać. Ale chyba tyle, że czy to apka plująca HTMLem czy JSONy to na jedno wychodzi w kategorii zabezpieczania. Co w zasadzie jest prawdą.
discoStar
a co jeśli mam formularz i chcę dane zapisać do bazy? albo na podstawie danych z formularza obrobić dane z bazy? jak wtedy przesłać ten request na serwer?
EL
@discoStar: Bierzesz dane z formularza, robisz post request do serwera. Serwer odbiera, waliduje i jeśli wszystko mu pasi to zapisuje.
discoStar
@eL: dzięki za odpowiedź. Chodzi o zwykły POST w jsp? Jak działa taki post i jak to jest zabezpieczone?
EL
@discoStar: Poczytaj trochę o rest i http. W dużym uproszczeniu nie możesz klientowi zabronić robienia requesta do endpointów twojego serwera jeśli są publiczne. Jeśli chcesz się zabezpieczyć to musisz zrobić jakieś uwierzytelnianie po stronie serwera aby dostęp do niektórych zasobów mieli tylko Ci którzy chcesz żeby mieli. A więc nadal mogą Cię requestować wszyscy klienci ale dostęp mają tylko nieliczni i nie ma znaczenia czy będzie to curl, postman, js, jquery czy co tam sobie jeszcze wymyślisz.
artur52
  • Rejestracja:prawie 11 lat
  • Ostatnio:11 miesięcy
  • Lokalizacja:Warszawa
  • Postów:223
2

BasicAuth
JWT
OAUTH2

discoStar
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Wlk. Brytania
  • Postów:92
0

Co jak bym użył CORS, że tylko z mojej domeny mogą iść call'e do REST'a?

0
discoStar napisał(a):

Co jak bym użył CORS, że tylko z mojej domeny mogą iść call'e do REST'a?

nie pomoże, cors latwo obejsc

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.