Spring REST hermetyzacja danych użytkowników

Odpowiedz Nowy wątek
2019-03-18 10:38
0

Zaczynam naukę z programowaniem w spring boot. Wymyśliłem sobie że utworze jakieś proste REST API. Ale nie wiem jak do końca powinno wyglądać rozwiązanie mojego problemu. Dla uproszczenia tutaj przedstawię teoretyczny przykład że są użytkownicy w tabeli user i każdy z nich może pobrać, dodawać, edytować swoją np listę do zrobienia. Czyli jest druga tabela todo. W tej tabeli byłyby listy zadań wszystkich użytkowników ale każdy wiersz posiadałby id użytkownika do którego należy. Teraz każdy użytkownik aby pobrać swoją listę musi się uwierzytelnić. Tutoriali uwierzytelniania są całe pęczki i to nie problem dla mnie, np. uwierzytelnianie zrobiłbym wzorując się na tym. Czyli za pomocą base authentication + https. Użytkownik Tomek pobierałby swoją listę GET:/api/v1/user/tomek/todos przesyłając z swoim zapytaniem swój login oraz hasło.

@RequestMapping(path = "/api/v1/user/{username}/todos")
public List<ToDo> getAllTodos(@PathVariable String username) { 
    User user = userRepo.findBy(username);
    return todoRepo.findAllByUserId(user.getId());
}

No ale co jeśli np. Janusz wysłałby zapytanie GET:/api/v1/user/tomek/todos przesyłając swoje poświadczenia (nie Tomka, no bo ich nie zna). To wtedy miałby wgląd do listy zadań Tomka. Jak dokonać walidacji? Czy w metodzie mam sprawdzać dane z basicAuthentication z żądaniem czy powiązany username jest z danymi w basicAuthentocation (można tak?)? Czy może jest jakieś inne wyjście np. odpowiednio trzeba skonfigurować spring-security albo inaczej to zrobić "architektonicznie"? Jakie są rozwiązania tego problemu?

Pozostało 580 znaków

2019-03-18 10:59
public List<ToDo> getAllTodos(Principal p){}

Spring sam Ci wstrzyknie aktualnie zalogowane usera. Poza tym masz coś takiego jak @Secured @PreAuthorize @Pre/PostFilter

edytowany 1x, ostatnio: artur52, 2019-03-18 10:59
Dzięki za naprowadzanie. - GarryMoveOut 2019-03-19 10:40

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0