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?
Odpowiedzi:
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
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.
źródło
oAuth jest standardem w tym zakresie, ale jest więcej rozwiązań.
Nie próbuj samodzielnie wdrażać zabezpieczeń, tokenów itp., Ponieważ jest to trudny i ryzykowny temat. Spójrz na przykład tutaj:
/programming/4574868/securing-my-rest-api-with-oauth-while-still-allowing-authentication-via-third-pa
źródło