• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dostęp do danych poprzez API

Object Storage Arubacloud
0 głosów
378 wizyt
pytanie zadane 9 lutego 2020 w Algorytmy przez michal Mądrala (5,560 p.)
Jak tworzymy api w celu zabezpieczenia dostępu do danych budujemy oczywiście cały system logowania. Po zalogowaniu użytkownik otrzymuje token którym podpisuje swoje requesty i otrzymuje dostęp do danych co jest logiczne, ale jak zabezpieczyć dane innych użytkowników, żeby każdy miał dostęp tylko do swoich danych. Czy w każdym zapytaniu powinien być przesyłany identyfikator użytkownika i wszystkie zapytania do bazy powinny być filtrowane, ogólnie chodzi mi o to na jakiej zasadzie się to powinno odbywać ?

3 odpowiedzi

0 głosów
odpowiedź 9 lutego 2020 przez Ehlert Ekspert (212,670 p.)

token którym podpisuje swoje requesty

Nie do końca. Token które otrzymuje jest podpisany. Dołącza go tylko do nagłówka requesta.

Czy w każdym zapytaniu powinien być przesyłany identyfikator użytkownika

To zależy do których endpointów. Jeśli chcesz aby pod jakimś urlem była akcja dostępna tylko dla zalogowanych to wymagaj tam tokena.

wszystkie zapytania do bazy powinny być filtrowane, ogólnie chodzi mi o to na jakiej zasadzie się to powinno odbywać ?

Doprecyzuj proszę o co konkretnie chodzi.

komentarz 10 lutego 2020 przez michal Mądrala (5,560 p.)
Podam przykład. Aplikacja obsługuje różne firmy i te firmy mają swoje zamówienia w tabeli np. Orders. Użytkownicy każdej firmy mają dostęp do api i mogą się zalogować. I teraz chodzi mi o to żeby zabezpieczyć tak aby użytkownicy z danej firmy mieli dostęp tylko do swoich zamówień, a nie jak już się zalogują to wykonując zapytanie np oder/133, (podając wybrane id) moogli odczytać zamówienia innych.
0 głosów
odpowiedź 10 lutego 2020 przez michal Mądrala (5,560 p.)
Ktoś się orientuje jak to powinno wyglądać  ?
0 głosów
odpowiedź 11 lutego 2020 przez Qwizi Obywatel (1,280 p.)
edycja 11 lutego 2020 przez Qwizi

Tworzyć endpoint, który jest dostępny tylko dla zalogowanych (przesłanie tokenu). I teraz na backendzie pobierasz tylko te dane, do których ma dostęp zalogowany user. Dajmy na przykład że chcesz mieć endpoint, który pobiera dane zalogowanego usera, więc tworzysz endpoint np. /users/me/ i zabezpieczasz go tokenem. (podam tutaj przykład z Django).

class AccounsMeView(APIView):
  permission_classes = (IsAuthenticated,)
 
 def get(self, request):
  user = request.user # Pobranie instancji zalogowanego uzytkownika
  # Teraz jakieś przykładowe zapytanie do bazy zwracające dane usera
  queryset = User.objects.get(id=user.id)
  serializer = UserSerializer(queryset)
  return Response(serializer.data)
komentarz 11 lutego 2020 przez michal Mądrala (5,560 p.)

I teraz na backendzie pobierasz tylko te dane, do których ma dostęp zalogowany user.

O tą kwestię mi dokładnie chodzi. Czy mam rozumieć że na backendzie po odebraniu requesta który jest dostępny tylko dla zalogowanych powinienem z tokena pobrać id użytkownika i z bazy pobierać  tylko dane które mają to id użytkownika?

Chodzi mi tutaj tylko o schemat działania czy w ten sposób to powinno wyglądać.

Czy może frameworki maja swoje gotowe funkcjonalności do obsłużenia tego ?

Podobne pytania

0 głosów
1 odpowiedź 774 wizyt
pytanie zadane 2 grudnia 2017 w C# przez Resho Nowicjusz (190 p.)
0 głosów
2 odpowiedzi 175 wizyt
+2 głosów
3 odpowiedzi 596 wizyt
pytanie zadane 8 kwietnia 2023 w PHP przez michal Mądrala (5,560 p.)

92,555 zapytań

141,402 odpowiedzi

319,543 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...