Autoryzacja OAuth 2.0
OAuth 2.0 to framework autoryzacji, ktory stal sie de facto standardem autoryzacji dostepu do chronionych zasobow. Umozliwia aplikacjom stron trzecich uzyskanie dostepu do danych uzytkownika bez ujawniania jego danych uwierzytelniajacych. Zamiast udostepniac hasla, uslugi dostarczaja tokeny.
Kontekst
Wyobraz sobie, ze chcesz uzyc aplikacji stron trzecich, ktora potrzebuje dostepu do danych z Twojego konta Google. Nie chcialbys podawac tej aplikacji swojej nazwy uzytkownika i hasla Google, prawda? W tym miejscu wkracza OAuth. Pozwala Ci przyznac tej aplikacji dostep do Twoich danych Google bez udostepniania danych uwierzytelniajacych Google.
Podstawy OAuth 2.0
OAuth 2.0 skupia sie na prostocie dla deweloperow klientow, jednoczesnie zapewniajac konkretne przeplywy autoryzacji dla aplikacji webowych, desktopowych, telefonow komorkowych i urzadzen domowych. Oto uproszczone omowienie:
Wlasciciel zasobu (Resource Owner): Uzytkownik, ktory autoryzuje aplikacje do dostepu do swojego konta. Dostep aplikacji do konta uzytkownika jest ograniczony do "zakresu" przyznanej autoryzacji (np. odczytywanie lub zapisywanie konkretnego typu danych).
Klient (Client): Aplikacja, ktora chce uzyskac dostep do konta uzytkownika. Zanim to zrobi, musi byc autoryzowana przez uzytkownika, a autoryzacja musi byc zwalidowana przez API.
Serwer zasobow (Resource Server): Serwer hostujacy konta uzytkownikow. Moze akceptowac i odpowiadac na zadania chronionych zasobow za pomoca tokenow dostepu.
Serwer autoryzacji (Authorization Server): Ten serwer weryfikuje tozsamosc uzytkownika, a nastepnie wydaje tokeny dostepu aplikacji.
Przeplywy OAuth 2.0
Istnieje kilka "przeplywow" lub "typow autoryzacji" dla roznych typow aplikacji i przypadkow uzycia:
Authorization Code (dla aplikacji dzialajacych na serwerze webowym): Jest to najczestszy przeplyw, szczegolnie dla aplikacji webowych. Polega na przekierowaniu uzytkownika do uslugi, gdzie sie loguje. Po zalogowaniu zostaje przekierowany z powrotem do aplikacji z kodem autoryzacji, ktory aplikacja moze wymienic na token dostepu.
Implicit (dla aplikacji dzialajacych w przegladarce): Ten przeplyw jest przeznaczony dla aplikacji opartych na kliencie (np. aplikacje jednostronicowe), gdzie token dostepu jest zwracany natychmiast bez dodatkowego kroku wymiany kodu autoryzacji.
Resource Owner Password Credentials: Ten przeplyw pozwala aplikacji bezposrednio dostarczyc nazwe uzytkownika i haslo uzytkownika. Jest zalecany tylko dla zaufanych aplikacji, poniewaz wiaze sie z udostepnianiem danych uwierzytelniajacych uzytkownika.
Client Credentials: Uzywany, gdy sam klient jest wlascicielem zasobu; na przyklad, gdy klient jest usluga dzialajaca w tle.
Tokeny
Zamiast uzywac danych uwierzytelniajacych uzytkownika, OAuth 2.0 uzywa tokenow. Istnieja dwa typy:
Token dostepu (Access Token): Pozwala aplikacji na wykonywanie zadan API w imieniu uzytkownika. Ma krotki czas zycia.
Token odswiezania (Refresh Token): Moze byc uzywany do uzyskania nowego tokena dostepu, jesli oryginalny token dostepu wygasl. Ma dluzszy czas zycia niz token dostepu.
Bezpieczenstwo
OAuth 2.0 opiera sie na SSL/TLS w zakresie bezpieczenstwa. Zapewnia poufnosc danych miedzy klientem, serwerem autoryzacji i serwerem zasobow. Nawet jesli atakujacym uda sie przechwycic token dostepu, nie moga go uzyc po jego wygasnieciu (zazwyczaj krotki okres) ani poza zakresem, dla ktorego zostal wydany.
Podsumowanie
OAuth 2.0 to potezny i elastyczny framework, ktory umozliwia aplikacjom stron trzecich dostep do danych uzytkownikow bez ujawniania danych uwierzytelniajacych. Stal sie niezbednym narzedziem w nowoczesnym Internecie, zapewniajac uzytkownikom i deweloperom bezpieczny i efektywny sposob przyznawania i zarzadzania uprawnieniami w roznych uslugach i aplikacjach.