HISTORIA OAUTH: OD HASŁA DO GLOBALNYCH STANDARDÓW
Widzisz to każdego dnia. Klikasz „Zaloguj przez Google” lub „Zaloguj przez GitHub”. Nie wpisujesz hasła. Wchodzisz na stronę natychmiast.
Działa to dzięki OAuth. To globalny standard bezpieczeństwa. Ale nie zaczęło się od tego. Ewoluował, aby rozwiązać ogromne problemy.
Problem z hasłami
W początkowych czasach tworzyłeś nowe hasło dla każdej witryny. Powodowało to trzy duże problemy:
- Ludzie używali tego samego hasła wszędzie. Jeśli jeden serwis wyciekł, każde konto było zagrożone.
- Ludzie zapominali haseł. Spędzali więcej czasu na klikaniu „zapomniałem hasła” niż na korzystaniu z sieci.
- Witryny widziały Twoje surowe hasło. Jeśli strona została zhakowana, Twoje hasło było skompromitowane.
Ewolucja bezpieczeństwa
Basic Auth: Wysyłałeś nazwę użytkownika i hasło z każdym żądaniem. Jeśli nie używałeś HTTPS, hakerzy mogli zobaczyć wszystko.
Session Cookies: Logowałeś się raz i otrzymywałeś identyfikator sesji (session ID). Było to lepsze, ale ciasteczka (cookies) mogą zostać skradzione poprzez ataki takie jak XSS lub CSRF. Ponadto jedna witryna nie mogła użyć Twojego logowania, aby porozmawiać z inną witryną.
API Keys: Przekazywałeś witrynie specjalny klucz. Było to lepsze, ponieważ nie wysyłałeś hasła. Jednak klucze API często mają zbyt duże uprawnienia. Jeśli dasz klucz API aplikacji, ta aplikacja może mieć uprawnienia do czytania Twoich e-maili, wysyłania wiadomości i usuwania Twojego konta. To jak oddanie kluczy do samochodu hotelowemu portierowi, ale ten klucz otwiera również Twój dom.
Rozwiązanie OAuth: Klucz dla portiera (Valet Key)
OAuth zmieniło zasady gry. Zamiast podawać hasło, podajesz „token”. Pomyśl o tym jak o kluczu dla portiera (valet key). Klucz dla portiera pozwala kierowcy zaparkować Twój samochód, ale nie pozwala mu otworzyć bagażnika ani wejść do Twojego domu.
Jak OAuth działa w praktyce:
- Chcesz używać Canva i pobierać zdjęcia z Google.
- Canva prosi Google o pozwolenie.
- Google pyta Cię: „Czy Canva może przeglądać Twoje zdjęcia?”
- Odpowiadasz: „Tak, ale tylko do przeglądania. Nie pozwól im niczego usuwać”.
- Google przekazuje Canva konkretny token.
Canva nigdy nie widzi Twojego hasła do Google. Nawet jeśli haker ukradnie ten token, może on przeglądać zdjęcia tylko przez krótki czas. Nie może zmienić Twojego hasła ani przelać Twoich pieniędzy.
Nowoczesne bezpieczeństwo: PKCE
Aplikacje mobilne i webowe mają słaby punkt. Nie potrafią dobrze ukrywać sekretów. Aby to naprawić, używamy PKCE (Proof Key for Code Exchange).
Działa to jak system rezerwacji:
- Aplikacja tworzy tajny kod (verifier).
- Aplikacja wysyła zahaszowaną wersję tego kodu (challenge) do Google.
- Kiedy aplikacja prosi o token, wysyła oryginalny tajny kod.
- Google sprawdza, czy kod zgadza się z wyzwaniem (challenge).
Jeśli się zgadzają, Google wie, że to ta sama aplikacja. Jeśli nie, Google blokuje żądanie. To powstrzymuje hakerów przed kradzieżą Twojego kodu autoryzacyjnego.
Mapa drogowa OAuth
- 2007 (OAuth 1.0): Bardzo złożony i wykorzystujący skomplikowaną matematykę.
- 2012 (OAuth 2.0): Szybszy i łatwiejszy. Wykorzystywał tokeny i wymagał HTTPS.
- 2016 (OAuth 2.0 + PKCE): Dodano bezpieczeństwo dla aplikacji mobilnych i nowoczesnych aplikacji webowych.
- 2023 (OAuth 2.1): Nowy złoty standard. Eliminuje stare, niebezpieczne metody.
Główna lekcja: Nigdy nie podawaj swojego hasła innej aplikacji. Daj im ograniczony bilet, który wygasa. Ty zachowujesz kontrolę.
Źródło: https://dev.to/gophernment/oauth-elaaaebbprawatisaastr-cchaakrhasphaan-suumaatrthaanolk-16b4
