Uwierzytelnianie
Serwer HTTP warto wzbogacić również o możliwość zweryfikowania tożsamości osoby ubiegającej się o dane zasoby serwera. Mechanizmy uwierzytelnienia dla protokołu HTTP zostały opisane w osobnym dokumencie – RFC-2617. Zostały tam opisane 2 mechanizmy: uwierzytelnianie podstawowe (Basic access authentication), oraz uwierzytelnianie szyfrowane (Digest access authentication). Ze względu na to, że serwer decyduje jakiego uwierzytelniania klient ma użyć, wystarczy zaimplementować jeden z nich, aby wprowadzić taką funkcjonalność. W tym serwerze zostanie zaimplementowany mechanizm prostszy – uwierzytelnianie podstawowe [24].
Sam proces uwierzytelnienia przebiega następująco:
-
Klient wysyła standardowe zapytanie o zasób.
-
Serwer sprawdza dostępność zasobu i wykrywa, że wymaga on uwierzytelnienia.
-
Serwer wysyła w odpowiedzi do klienta status 401 Unauthorized o wymaganej autoryzacji, podając w nagłówku „WWW-Authenticate” informację o sposobie uwierzytelnienia – wartość „Basic”
-
Klient ponawia wcześniejsze zapytanie dodając do nagłówka „Authorization” informacje o uwierzytelnieniu: „Basic”, wraz z danymi „identyfikator:hasło” zakodowanymi jako Base64.
-
Serwer ponownie sprawdza dostępność i wykrywa, że wymaga on uwierzytelnienia.
-
Serwer pobiera informacje o loginie i haśle z zapytania klienta i porównuje z wewnętrznymi ustawieniami. W przypadku poprawności zwraca w odpowiedzi oczekiwane dane. Jeżeli podane dane były nieprawidłowe wysyła ponownie w odpowiedzi status 401 Unauthorized z nagłówkiem „WWW-Authenticate”.
Przeglądarki po poprawnym uwierzytelnieniu przechowują informacje o podanym identyfikatorze i haśle, dołączając je automatycznie do kolejnych zapytań do serwera.
Serwer HTTP 