Uwierzytelnij natywną aplikację mobilną za pomocą interfejsu API REST

16

Wkrótce zaczynam nowy projekt, który dotyczy aplikacji mobilnych na wszystkie główne platformy mobilne (iOS, Android, Windows). Będzie to architektura klient-serwer.

Aplikacja ma zarówno charakter informacyjny, jak i transakcyjny. W przypadku części transakcyjnej muszą mieć konto i zalogować się, zanim będzie można dokonać transakcji. Jestem nowy w tworzeniu aplikacji mobilnych, więc nie wiem, w jaki sposób odbywa się uwierzytelnianie na tych platformach. Klienci będą komunikować się z serwerem za pośrednictwem interfejsu API REST. Będzie używał oczywiście HTTPS.

Nie zdecydowałem jeszcze, czy chcę się zalogować, gdy użytkownik otworzy aplikację, czy tylko podczas przeprowadzania transakcji.

Mam następujące pytania:

1) Podobnie jak w przypadku aplikacji na Facebooku, dane uwierzytelniające podaje się tylko przy pierwszym otwarciu aplikacji. Następnie automatycznie logujesz się przy każdym otwarciu aplikacji. Jak to osiągnąć? Po prostu przez szyfrowanie i przechowywanie poświadczeń na urządzeniu i wysyłanie ich przy każdym uruchomieniu aplikacji?

2) Czy muszę uwierzytelniać użytkownika dla każdego (transakcyjnego) żądania przesłanego do interfejsu API REST, czy stosować podejście oparte na tokenach?

Możesz zaproponować inne sposoby uwierzytelnienia.

Dzięki!

Superkomórka
źródło

Odpowiedzi:

14

Użytkownik przekazuje nazwę użytkownika / hasło do metody logowania interfejsu API RESTful, a on zwraca token dostępu. Ten token dostępu to tylko jeden unikalny (dla systemu) ciąg.

Urządzenie przechowuje (utrzymuje się) ten token dostępu. Za każdym razem, gdy wysyłasz żądanie RESTful do serwera, umieszczasz ten token dostępu w nagłówku żądania HTTP. Serwer znajduje użytkownika według tokena dostępu i po pomyślnym spełnieniu żądania.

nazwa użytkownika / hasło nie mogą być przechowywane na urządzeniu.

c-uśmiech
źródło
Czy osoby trzecie (hakerzy itp.) Mogą uzyskać token dostępu?
Supercell,
To oczywiście możliwe. Zwłaszcza jeśli nie używasz HTTPS. Większość internetowych klientów poczty e-mail prosi o ponowne zalogowanie się od czasu do czasu. Na przykład token ma ustawiony okres ważności na dwa tygodnie. Więc raz na dwa tygodnie będziesz musiał ponownie się zalogować.
c-smile
Jak zostanie wygenerowany token dostępu i czy token dostępu zostanie zapisany na serwerze.
Ghyath Serhal
@ c-smile Facebook nigdy nie poprosił mnie o ponowne zalogowanie. Dlatego tak naprawdę nie widzę różnicy między hasłem a tokenem dostępu.
Mickael Marrache
wiem, że jest dość późno. ale Facebook i inni dostawcy wydają token odświeżania, token dostępu i czas wygaśnięcia (token dostępu) w momencie logowania. token dostępu jest krótkotrwały, a nowy token dostępu można wygenerować za pomocą tokena odświeżania. Przy następnym logowaniu można utworzyć nowy token odświeżania, przez co stary będzie nieważny
Cerlin