Najlepszy sposób na wdrożenie uwierzytelniania dla interfejsu API REST

21

Tworzymy aplikacje społecznościowe na urządzenia mobilne. Każda aplikacja korzysta z usług sieciowych API RESTful. Kiedy wdrażam login, zwykle przechowuję nazwę użytkownika i hasło gdzieś na urządzeniu. Następnie wysyłam je i w odpowiedzi uzyskuję dostęp do mojego profilu. Ale wiem też, że jest na to inny sposób.

Jeden w jakiś sposób generuje token z określonym algorytmem, a następnie wysyła go zamiast nazwy użytkownika i hasła w celu uzyskania dostępu.

Jak mam to wdrożyć? Czy powinienem wysyłać ten token wraz z każdym innym żądaniem niż logowanie?

Vladimir Stazhilov
źródło
11
To jest uwierzytelnianie , a nie autoryzacja . Uwierzytelnianie = udowodnij, że jesteś tym, za kogo się podajesz. Autoryzacja = udowodnij, że możesz robić to, o co prosiłeś.
tdammers
Chciałem tylko dodać ten sam komentarz do odpowiedzi! +1 do ciebie @tdammers Mam edytować całą zawartość tak googlowania zezwolenia nie przyniesie Ci tutaj
Shiplu Mokaddim

Odpowiedzi:

14

Istnieje kilka sposobów implementacji uwierzytelniania w kontekście RESTful i bezpieczniej jest wysyłać tylko tokeny zamiast loginu / hasła: możesz łatwo sprawić, że tokeny będą nieważne z powodu przekroczenia limitu czasu lub według innych kryteriów i poprosić użytkownika o ponowne uwierzytelnienie .

Na przykład żądania REST uwierzytelniania za pomocą HMAC . W tym podejściu klient będzie miał klucze publiczne i tajne . Do wszystkich żądań wymagających uwierzytelnienia należy dodać klucz publiс i użyć tajnego klucza do obliczenia wartości skrótu żądania

var myRequest = "https://myserver/resource?publicId=12345&param=value";
var requestHash = hmac_implementation(myRequest);
myRequest = myRequest + '&hmac=' + requestHash;

Teraz serwer może zidentyfikować żądanie na podstawie klucza publicznego i sam obliczyć requestHash . Jeśli oba skróty są równe, użytkownik jest autoryzowany.

Przy okazji musisz także używać protokołu https do bezpiecznej komunikacji przez sieć komputerową - to znacznie zmniejszy liczbę możliwych problemów.

Akim
źródło