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.
Odpowiedzi:
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:
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.
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.
(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ż
źródło