Czy ktoś może mi podać krok po kroku opis działania uwierzytelniania opartego na plikach cookie? Nigdy nie robiłem niczego, co dotyczyło zarówno uwierzytelnienia, jak i plików cookie. Co musi zrobić przeglądarka? Co serwer musi zrobić? W jakiej kolejności? Jak dbamy o bezpieczeństwo?
Czytałem o różnych rodzajach uwierzytelniania i o plikach cookie, ale chciałbym podstawowy opis, jak korzystać z tych dwóch razem - przeczytałem tylko, że są one często używane razem, ale nie mogłem znaleźć opisu, w jaki sposób.
authentication
cookies
browser
Mastid
źródło
źródło
Odpowiedzi:
Ciasteczko to w zasadzie tylko element słownika. Każdy element ma klucz i wartość. Do uwierzytelnienia kluczem może być „nazwa użytkownika”, a wartością będzie nazwa użytkownika. Za każdym razem, gdy wysyłasz żądanie do strony internetowej, przeglądarka dołącza do żądania pliki cookie, a serwer hosta sprawdza pliki cookie. Tak więc uwierzytelnianie może odbywać się automatycznie.
Aby ustawić plik cookie, wystarczy dodać go do odpowiedzi, którą serwer odsyła po żądaniach. Przeglądarka doda plik cookie po otrzymaniu odpowiedzi.
Istnieją różne opcje, które można skonfigurować po stronie serwera plików cookie, takie jak czasy ważności lub szyfrowanie. Zaszyfrowany plik cookie jest często nazywany plikiem cookie podpisanym. Zasadniczo serwer szyfruje klucz i wartość w elemencie słownika, więc tylko serwer może korzystać z informacji. Zatem ciasteczko byłoby bezpieczne.
Przeglądarka zapisze pliki cookie ustawione przez serwer. W nagłówku HTTP każdego żądania przeglądarki wysłanej do tego serwera doda pliki cookie. Dodają tylko pliki cookie dla domen, które je ustawiają. Witryna example.com może ustawić plik cookie, a także dodać opcje w nagłówku HTTP dla przeglądarek, aby wysłać plik cookie z powrotem do subdomen, takich jak sub.example.com. Niedopuszczalne byłoby, aby przeglądarka kiedykolwiek wysyłała pliki cookie do innej domeny.
źródło
Zdaję sobie sprawę, że to już lata, ale pomyślałem, że mogę rozwinąć odpowiedź Conora i dodać trochę więcej do dyskusji.
Krok 1: Klient> Rejestracja
Przed wszystkim innym użytkownik musi się zarejestrować. Klient wysyła do serwera żądanie HTTP zawierające swoją nazwę użytkownika i hasło.
Krok 2: Serwer> Obsługa rejestracji
Serwer otrzymuje to żądanie i szyfruje hasło przed zapisaniem nazwy użytkownika i hasła w bazie danych. W ten sposób, jeśli ktoś uzyska dostęp do Twojej bazy danych, nie zobaczy rzeczywistych haseł użytkowników.
Krok 3: Klient> Login użytkownika
Teraz twój użytkownik się loguje. Podaje swoją nazwę użytkownika / hasło i ponownie jest on wysyłany do serwera jako żądanie HTTP.
Krok 4: Serwer> Sprawdzanie poprawności logowania
Serwer wyszukuje nazwę użytkownika w bazie danych, szyfruje dostarczone hasło logowania i porównuje je z wcześniej zakodowanym hasłem w bazie danych. Jeśli się nie wyrejestruje, możemy odmówić im dostępu, wysyłając kod stanu 401 i kończąc żądanie .
Krok 5: Serwer> Generowanie tokena dostępu
Jeśli wszystko się sprawdzi, utworzymy token dostępu, który jednoznacznie identyfikuje sesję użytkownika. Wciąż na serwerze robimy dwie rzeczy z tokenem dostępu:
Odtąd pliki cookie będą dołączane do każdego żądania (i odpowiedzi) między klientem a serwerem.
Krok 6: Klient> Składanie żądań strony
Po stronie klienta jesteśmy teraz zalogowani. Za każdym razem, gdy klient wysyła żądanie strony wymagającej autoryzacji (tzn. Musi się zalogować), serwer uzyskuje token dostępu z pliku cookie i sprawdza go względem tego w bazie danych powiązanej z tym użytkownikiem. Jeśli się sprawdzi, dostęp zostanie przyznany.
To powinno zacząć. Pamiętaj, aby usunąć pliki cookie po wylogowaniu!
źródło
Uwierzytelnianie na podstawie plików cookie
Uwierzytelnianie oparte na plikach cookie działa normalnie w tych 4 krokach -
Przeglądarka prześle ten identyfikator sesji przy każdym kolejnym żądaniu, identyfikator sesji zostanie zweryfikowany w bazie danych, na podstawie tej strony internetowej identyfikator sesji zidentyfikuje sesję należącą do klienta, a następnie umożliwi dostęp do żądania.
Gdy użytkownik wyloguje się z aplikacji, sesja jest niszczona zarówno po stronie klienta, jak i po stronie serwera.
źródło