Sobes.tech
Junior

Czym jest podstawowa autoryzacja (Basic Auth)?

sobes.tech AI

Odpowiedź od AI

Podstawowa autoryzacja to najprostszy sposób uwierzytelniania klienta HTTP, określony w standardzie RFC 7617.

Zasada działania:

  1. Klient wysyła żądanie HTTP do chronionego zasobu.
  2. Serwer odpowiada statusem 401 Unauthorized i nagłówkiem WWW-Authenticate: Basic realm="<realm>", gdzie <realm> to tekstowy opis chronionej strefy (zasobu).
  3. Przeglądarka lub aplikacja kliencka wyświetla okno dialogowe do wprowadzenia nazwy użytkownika i hasła.
  4. Klient koduje nazwę użytkownika i hasło w ciąg w formacie username:password.
  5. Uzyskany ciąg jest kodowany za pomocą Base64.
  6. Klient powtarza żądanie, dodając nagłówek Authorization: Basic <zakodowany_base64>, gdzie <zakodowany_base64> to wynik kodowania Base64.
  7. Serwer dekoduje ciąg Base64, rozdziela nazwę użytkownika i hasło i sprawdza dane uwierzytelniające.
  8. Jeśli dane są poprawne, serwer wysyła żądany zasób. W przeciwnym razie, ponownie zwraca 401 Unauthorized.

Przykład nagłówka Authorization:

Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

gdzie YWxhZGRpbjpvcGVuc2VzYW1l jest ciągiem zakodowanym w Base64 z aladdin:opensesame.

Cechy:

  • Prostota: Łatwo zaimplementować zarówno po stronie klienta, jak i serwera.
  • Niezabezpieczenie: Dane uwierzytelniające są przesyłane, choć zakodowane w Base64, ale bez szyfrowania. Base64 to kodowanie, nie szyfrowanie. Podczas przechwytywania ruchu dane można łatwo odszyfrować. Tylko w połączeniu z HTTPS zapewnia minimalny poziom bezpieczeństwa.
  • Bezstanowość: Nie przechowuje stanu na serwerze między żądaniami (bezstanowe). Każde żądanie wymaga nagłówka Authorization.
  • Doświadczenie użytkownika: Okno dialogowe przeglądarki jest mniej elastyczne i mniej przyjazne w porównaniu do własnych formularzy uwierzytelniania.

Zastosowanie: Najczęściej stosowana do ochrony API, zasobów statycznych lub w prostych systemach wewnętrznych, gdzie bezpieczeństwo nie jest krytyczne, lub zawsze w połączeniu z SSL/TLS (HTTPS).