Autoryzacja OAuth a uwierzytelnianie

90

Terminologia OAuth od dawna mnie niepokoi. Czy autoryzacja OAuth, jak niektórzy sugerują, czy jest to uwierzytelnianie?

Popraw mnie, jeśli się mylę, ale zawsze uważałem, że autoryzacja jest czynnością polegającą na umożliwieniu komuś dostępu do zasobu, ale OAuth nie wydaje się mieć żadnej implementacji, która faktycznie umożliwia dostęp użytkownikom do danego zasobu. Wszystkie implementacje OAuth, o których mowa, to dostarczanie użytkownikowi tokena (podpisanego, a czasem zaszyfrowanego). Ten token jest następnie przekazywany przy każdym wywołaniu do punktu końcowego usługi zaplecza, gdzie jest sprawdzany pod kątem ważności, ponownie nie dotyczy to protokołu OAuth.

Czy uwierzytelnianie OAuth (każdy artykuł mówi, że tak nie jest), które według mnie wymaga od użytkownika podania poświadczeń, które z kolei dowodzą, że użytkownik powinien / nie powinien mieć dostępu?

Wygląda więc na to, że OAuth nie jest autoryzacją ani uwierzytelnianiem, ponieważ muszą być wykonywane przez inne procesy. Więc o co chodzi? Czy jest to proces przekazywania tokena? Czy to puszyste słowo, które naprawdę nie ma określonego znaczenia?

Trudno zadać pytanie na ten temat bez zabrzmi enigmatycznego i przesądnego (duchy i gobliny), więc spodziewam się, że odpowiedź na to pytanie też nie będzie prosta. Wejdź na własne ryzyko.

edgarhsanchez
źródło
Te odpowiedzi również okazały się pomocne: security.stackexchange.com/questions/44611/…
antak
OAuth 2.0 to protokół bezpieczeństwa. Szczegóły: stackoverflow.com/a/54304326/3623172
Rajat

Odpowiedzi:

153

OAuth to specyfikacja autoryzacji

OAuth 2.0 to specyfikacja dotycząca autoryzacji, ale NIE dotycząca uwierzytelniania. RFC 6749, 3.1. Punkt końcowy autoryzacji wyraźnie mówi, co następuje:

Punkt końcowy autoryzacji służy do interakcji z właścicielem zasobu i uzyskiwania nadania autoryzacji. Serwer autoryzacji MUSI najpierw zweryfikować tożsamość właściciela zasobu. Sposób, w jaki serwer autoryzacyjny uwierzytelnia właściciela zasobu (np. Nazwa użytkownika i hasło logowania, sesyjne pliki cookie) wykracza poza zakres tej specyfikacji .


Uwierzytelnianie OAuth?

Uwierzytelnianie dotyczy informacji o tym, „kim się jest”. Autoryzacja dotyczy informacji o tym, „kto komu udziela jakich uprawnień”. Przepływ autoryzacji obejmuje uwierzytelnianie jako pierwszy krok. To jest powód, dla którego ludzie są często zdezorientowani.

Istnieje wiele bibliotek i usług, które używają OAuth 2.0 do uwierzytelniania. Jest często nazywany „logowaniem społecznościowym” i sprawia, że ​​ludzie są bardziej zdezorientowani. Jeśli widzisz „Uwierzytelnianie OAuth” (nie „Autoryzacja OAuth”), jest to rozwiązanie wykorzystujące OAuth do uwierzytelniania.


OpenID Connect

OpenID 1.0 i OpenID 2.0 to stare specyfikacje uwierzytelniania. Ci, którzy przygotowali specyfikacje, oczekiwali, że ludzie będą używać OpenID do uwierzytelniania. Jednak niektórzy ludzie zaczęli używać OAuth 2.0 do uwierzytelniania (nie do autoryzacji) i uwierzytelnianie OAuth szybko się rozpowszechniło.

Z punktu widzenia facetów z OpenID uwierzytelnianie oparte na OAuth nie było wystarczająco bezpieczne, ale musieli przyznać, że ludzie woleli uwierzytelnianie OAuth. W rezultacie faceci z OpenID zdecydowali się zdefiniować nową specyfikację, OpenID Connect , oprócz OAuth 2.0.

Tak, to znacznie bardziej zdezorientowało ludzi.


Jednozdaniowe definicje protokołów OAuth 2.0 i OpenID Connect

OAuth 2.0 to platforma, w której użytkownik usługi może zezwolić aplikacji innej firmy na dostęp do swoich danych przechowywanych w usłudze bez ujawniania swoich danych uwierzytelniających (identyfikatora i hasła) aplikacji.

wprowadź opis obrazu tutaj

OpenID Connect to platforma bazująca na OAuth 2.0, w której aplikacja innej firmy może uzyskiwać informacje o tożsamości użytkownika, którymi zarządza usługa.

wprowadź opis obrazu tutaj

(Przepraszamy, te definicje to fragmenty ze strony przeglądu mojej firmy)


Definicje z punktu widzenia realizatorów

Uwierzytelnianie to proces mający na celu określenie podmiotu (= unikalnego identyfikatora) użytkownika końcowego. Istnieje wiele sposobów ustalenia tematu. Identyfikator i hasło, odciski palców, rozpoznawanie tęczówki itp.

Autoryzacja to proces polegający na powiązaniu podmiotu z żądanymi uprawnieniami i aplikacją kliencką, która zażądała tych uprawnień. Token dostępu reprezentuje powiązanie.


Zobacz też

  1. Pełnoprawny implementator OAuth i OpenID Connect, mówi o wynikach
  2. Diagramy i filmy wszystkich przepływów protokołu OAuth 2.0
  3. Diagramy wszystkich przepływów OpenID Connect
  4. Najprostszy przewodnik po protokole OAuth 2.0
Takahiko Kawasaki
źródło
13
Dla tych, którzy zastanawiają się, dlaczego uwierzytelnianie oparte na OAuth nie było wystarczająco bezpieczne , zakładam, że przyczyną są te typowe pułapki .
antak
4
„Przepływ autoryzacji obejmuje uwierzytelnianie jako pierwszy krok. To jest powód, dla którego ludzie są często zdezorientowani”. Złoto.
Sully
1
Cóż, jedyną różnicą, jaką widzę między tymi dwoma diagramami, jest to, że pierwszy zawiera „dane użytkownika”, a drugi „tożsamość użytkownika”, więc tak, jest to mylące.
Joel_Blum