Czym dokładnie jest OAuth (otwarta autoryzacja)?

201

Czym dokładnie jest OAuth (otwarta autoryzacja)?

Zebrałem trochę informacji

Ale chcę się uczyć i wiedzieć więcej. Szukam informacji o cyklu życia. Dlaczego większość sieci społecznościowych polega na tym otwartym protokole?

Czy stanie się de facto w niedalekiej przyszłości dzięki różnym technologiom (np. ASP.NET)?

bryanjclark
źródło

Odpowiedzi:

327

Czym dokładnie jest OAuth (otwarta autoryzacja)?

OAuth pozwala powiadomić dostawcę zasobów (np. Facebooka), że właściciel zasobu (np. Ty) udziela zgody stronie trzeciej (np. Aplikacji Facebook) na dostęp do ich informacji (np. Listy znajomych).

Jeśli przeczytasz to wyraźnie, zrozumiałbym twoje zamieszanie. Przejdźmy więc do konkretnego przykładu: dołączenie do kolejnej sieci społecznościowej!

Załóżmy, że masz już konto Gmail. Decydujesz się dołączyć do LinkedIn. Ręczne dodawanie wszystkich wielu przyjaciół jest męczące i podatne na błędy. Możesz mieć dość do połowy lub wstawić literówki w adresie e-mail w celu zaproszenia. Możesz więc pokusić się o to, by nie założyć konta.

W tej sytuacji LinkedIn ma dobry pomysł, aby napisać program, który automatycznie doda twoją listę znajomych, ponieważ komputery są znacznie bardziej wydajne i skuteczne w męczących i podatnych na błędy zadaniach. Ponieważ dołączenie do sieci jest teraz tak łatwe, nie ma mowy , byś odrzucił taką ofertę, prawda?

Bez interfejsu API do wymiany tej listy kontaktów musiałbyś podać LinkedIn nazwę użytkownika i hasło do konta GMail, tym samym dając im zbyt dużą moc .

W tym miejscu pojawia się OAuth. Jeśli Twój Gmail obsługuje protokół OAuth, LinkedIn może poprosić Cię o autoryzację dostępu do listy kontaktów GMail.

OAuth pozwala na:

  1. Różne poziomy dostępu: tylko do odczytu VS do odczytu i zapisu. Umożliwia to udzielenie dostępu do listy użytkowników lub dwukierunkowy dostęp w celu automatycznej synchronizacji nowych znajomych LinkedIn z kontaktami Gmaila.
  2. Szczegółowość dostępu: możesz zdecydować o przyznaniu dostępu tylko do twoich danych kontaktowych (nazwa użytkownika, adres e-mail, data urodzenia itp.) Lub do całej listy znajomych, kalendarza i innych danych.
  3. Pozwala zarządzać dostępem z aplikacji dostawcy zasobów. Jeśli aplikacja innej firmy nie zapewnia mechanizmu anulowania dostępu, utknąłbyś z dostępem do twoich informacji. W przypadku OAuth istnieje możliwość cofnięcia dostępu w dowolnym momencie.

Czy stanie się de facto (standardem) w najbliższej przyszłości?

Cóż, chociaż OAuth jest znaczącym krokiem naprzód, nie rozwiązuje problemów, jeśli ludzie nie używają go poprawnie. Na przykład, jeśli dostawca zasobów zapewnia tylko jeden poziom dostępu do odczytu i zapisu do wszystkich zasobów jednocześnie i nie zapewnia mechanizmu zarządzania dostępem, to nie ma sensu. Innymi słowy, OAuth jest strukturą zapewniającą funkcje autoryzacji, a nie tylko uwierzytelnianie.

W praktyce bardzo dobrze pasuje do modelu sieci społecznościowej. Jest to szczególnie popularne w sieciach społecznościowych, które chcą zezwalać na „wtyczki” innych firm. Jest to dziedzina, w której dostęp do zasobów jest z natury konieczny, a także z natury zawodny (tzn. Masz niewielką kontrolę jakości nad tymi aplikacjami lub nie masz jej wcale).

Nie widziałem tak wielu innych zastosowań na wolności. To znaczy, nie wiem z internetowym firmy doradztwa finansowego, która będzie dostęp wyciągi bankowe automatycznie, choć mogłoby technicznie być używane w ten sposób.

André Caron
źródło
6
Ułatwiłeś zrozumienie. Zamiast tego mogłem zmienić pierwszą linię na coś takiego. „OAuth pozwala powiadomić dostawcę zasobów (np. Gmaila), że właściciel zasobu (np. Użytkownik Gmaila) udziela zgody stronie trzeciej (np. Konto LinkedIn) na dostęp do jego informacji (np. Listy kontaktów)”. To, co napisałeś, tj. Dostawca i osoba trzecia „oboje” będący Facebookiem, jest mylące. Chociaż wprowadza nieco interesujący scenariusz, Oauth może być również wykorzystywany wewnętrznie - między różnymi projektami Twojej firmy. Dobrze? Czy dlatego wprowadziłeś skomplikowane wprowadzenie?
Honey,
Zgodnie z moim rozumieniem celem OAuth jest udzielenie ograniczonej czasowo autoryzacji aplikacji innej firmy w imieniu właściciela zasobu bez udostępniania poświadczeń. Jestem ciekawy, czy potrzebuję protokołu OAuth do korzystania z interfejsów API hostowanych na moim serwerze aplikacji z aplikacji mobilnej (bez udziału strony trzeciej)?
Monish Kamble
Kiedy zaufana strona mnie autoryzuje, czy nie oznacza to, że jest to również mechanizm uwierzytelniania?
zmienna
245

Co to jest oAuth?

OAuth to po prostu bezpieczny protokół autoryzacji, który zajmuje się autoryzacją aplikacji innych firm w celu uzyskania dostępu do danych użytkownika bez ujawniania hasła. na przykład. (Zaloguj się za pomocą fb, gPlus, twitter na wielu stronach internetowych). Wszystkie działają w ramach tego protokołu.

Zaangażowane strony

Protokół staje się łatwiejszy, gdy znasz zaangażowane strony. Zasadniczo zaangażowane są trzy strony: oAuth Provider, oAuth Client i Owner.

  • oAuth Client (aplikacja, która chce uzyskać dostęp do danych logowania)
  • oAuth Provider (np. Facebook, Twitter ...)
  • Właściciel (osoba z kontem Facebook, Twitter ..)

Jak to działa?

Przypuszczałem, że strona internetowa (stackoverflow) musi dodać login z funkcją Facebook. Tak więc facebook jest dostawcą oAuth, a przepływem stosu jest klient oAuth.

  1. Ten krok wykonuje programista aplikacji . Na samym początku Facebook (oAuth Provider) nie ma pojęcia o przepełnieniu stosu (klient oAuth), ponieważ nie ma między nimi łącza. Tak więc pierwszym krokiem jest zarejestrowanie przepływu stosu na stronie dla deweloperów Facebooka . Odbywa się to ręcznie, gdy programiści muszą podać informacje o aplikacji na Facebooku, takie jak nazwa aplikacji, strona internetowa, logo, adres URL przekierowania (ważny). Następnie stackoverflow został pomyślnie zarejestrowany, ma identyfikator klienta, tajne hasło klienta itp. Z Facebooka i działa z OAUTH . wprowadź opis zdjęcia tutaj

    2. Teraz, gdy użytkownik stackoverflow kliknie login za pomocą przycisku fb . Stackoverflow żąda facebooka z ClientId (fb użyj go do rozpoznania klienta) i redirectUrl (fb powróci do tego adresu po sukcesie). W ten sposób użytkownik zostaje przekierowany na stronę logowania na Facebooku. Jest to najlepsza część, w której użytkownik (właściciel) nie podaje swoich danych logowania do Facebooka stosowi.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

  1. Po właścicielu zezwól Stackoverflow na dostęp do informacji . Następnie Facebook przekierowuje z powrotem do przepełnienia stosu wraz z authcode za pomocą redirectUrl podanego w kroku 2.
  2. Następnie Stackoverflow kontaktuje się z Facebookiem wraz z uzyskanym authcode, aby upewnić się, że wszystko jest w porządku.
  3. Tylko wtedy Facebook da token dostępu do stackoverflow. Następnie token dostępu jest używany przez stackoverflow do odzyskania informacji właściciela bez użycia hasła. To jest cały motyw oAuth, w którym prawdziwe wiadomości nigdy nie są narażone na aplikacje stron trzecich.

Więcej:

Szybki film

link do strony internetowej

Balman Rawat
źródło
na pewno localhost jest również adresem URL i dlaczego nie wygasniesz i opublikujesz wynik tutaj.
Balman Rawat
2
tak Możesz użyć adresu IP jako adresu URL przekierowania: redirect_uri = ' 127.0.0.1:4200 ', a nazwa domeny OAuth powinna wynosić 127.0.0.1
Samson Maben
Ale czy e-mail powinien być taki sam na kliencie oAuth i dostawcy oAuth, aby działał?
Rowayda Khayri
ładne wyjaśnienie
JayD
OAuth 2 to protokół bezpieczeństwa, a nie protokół autoryzacji. Odpowiedź zaczyna się od niewłaściwej nuty.
Rajat
13

Mówiąc najprościej, OAuth to sposób, w jaki aplikacje mogą uzyskać dane uwierzytelniające bez bezpośredniego uzyskiwania informacji logowania użytkownika na niektórych stronach internetowych. Na przykład, jeśli piszesz aplikację na własnej stronie internetowej i chcesz, aby korzystała z danych z konta Facebooka użytkownika, możesz użyć OAuth, aby uzyskać token za pośrednictwem adresu URL wywołania zwrotnego, a następnie użyć tego tokenu do wykonywania połączeń z interfejsem API Facebooka, aby uzyskać jego używaj danych do momentu wygaśnięcia tokena. Strony internetowe polegają na nim, ponieważ umożliwia programistom dostęp do ich danych bez konieczności bezpośredniego ujawniania informacji i rozpowszechniania poświadczeń online, ale nadal zapewnia poziom ochrony danych. Czy stanie się de facto metodą autoryzacji? Być może ostatnio zyskuje dużo wsparcia ze strony Twittera, Facebooka,

ameer
źródło
14
OAuth nie jest procesem uwierzytelniania, ale raczej procesem autoryzacji.
André Caron,
Nie sugeruję, że aplikacja wymaga uwierzytelnienia bezpośrednio, ale użytkownik uwierzytelnia się u usługodawcy, aby upoważnić jakąś stronę trzecią do dostępu do danych użytkownika, jak sądzę ...
nazwa z
Dodałem precyzję, ponieważ OpenID jest specjalnie ukierunkowany na delegowane uwierzytelnianie (ponowne użycie istniejącego konta zewnętrznego) w nadziei, że ludzie przestaną udostępniać swoje dane uwierzytelniające. OAuth jest specjalnie ukierunkowany na autoryzację (ponowne wykorzystanie zasobów) w nadziei na ułatwienie wymiany informacji.
André Caron,
9

Oauth zdecydowanie nabiera tempa i zyskuje popularność również wśród interfejsów API dla przedsiębiorstw. W świecie aplikacji i danych przedsiębiorstwa coraz częściej udostępniają interfejsy API zewnętrznemu światu zgodnie z Google, Facebook, Twitter. Dzięki temu rozwojowi powstaje trójstronny trójkąt uwierzytelnienia

1) Dostawca interfejsu API - Każde przedsiębiorstwo, które ujawnia swoje zasoby za pomocą interfejsu API, na przykład Amazon, Target itp. 2) Deweloper - Ten, który tworzy aplikacje mobilne / inne za pomocą tych interfejsów API 3) Użytkownik końcowy - Użytkownik końcowy usługi świadczonej przez powiedzmy zarejestrowanym / gościnnym użytkownikom Amazon

Teraz rozwija się sytuacja związana z bezpieczeństwem - (wymieniam kilka z tych złożoności) 1) Ty jako użytkownik końcowy chcesz zezwolić programistom na dostęp do interfejsów API w Twoim imieniu. 2) Dostawca interfejsu API musi uwierzytelnić programistę i użytkownika końcowego 3) Użytkownik końcowy powinien mieć możliwość udzielania i cofania zezwoleń na udzieloną zgodę 4) Deweloper może mieć różne poziomy zaufania do dostawcy interfejsu API w który poziom przyznanych jej uprawnień jest inny

Oauth to środowisko autoryzacji, które próbuje rozwiązać wyżej wspomniany problem w standardowy sposób. Z uwagi na znaczenie interfejsów API i aplikacji problem ten stanie się coraz bardziej istotny, a każdy standard, który próbuje go rozwiązać - niezależnie od tego, czy będzie to problem, czy to jako dostawca / programista interfejsu API, a nawet użytkownik końcowy!

losowość
źródło
9

OAuth ( O pen Autoryzacja ) to otwarty standard protokołu przyznawania / opóźniania dostępu. Służył jako sposób na udzielenie internautom dostępu do stron internetowych lub aplikacji do ich informacji na innych stronach internetowych, ale bez podawania im haseł. Nie dotyczy uwierzytelniania .

Lub

OAuth 2.0 to protokół, który pozwala użytkownikowi przyznać ograniczony dostęp do swoich zasobów w jednej witrynie, w innej witrynie, bez konieczności ujawniania swoich poświadczeń.

  • Analogia 1: Wiele luksusowych samochodów ma dziś klucz do samochodu. Jest to specjalny klucz, który dajesz pracownikowi parkingowemu, w przeciwieństwie do zwykłego klucza, nie pozwoli na przejechanie samochodu więcej niż milę lub dwie. Niektóre klucze parkowania nie otwierają bagażnika, a inne blokują dostęp do Twojej książki adresowej telefonu komórkowego. Niezależnie od ograniczeń, jakie narzuca klucz kamerdynera, pomysł jest bardzo sprytny. Dajesz komuś ograniczony dostęp do swojego samochodu za pomocą specjalnego klucza, jednocześnie używając zwykłego klucza do odblokowania wszystkiego. src z auth0

  • Analogia 2: Załóżmy, że chcemy wypełnić formularz wniosku o konto bankowe. Tutaj Oauth działa, ponieważ zamiast wypełniać formularz przez wnioskodawcę, bank może wypełnić formularz przy użyciu Adhaar lub paszportu.

    W grę wchodzą trzy następujące podmioty:

    1. Wnioskodawca, tj. Właściciel
    2. Konto bankowe jest klientem OAuth, potrzebują informacji
    3. Adhaar / paszport ID to dostawca OAuth
Premraj
źródło
7

OAuth polega na delegowaniu autoryzacji (wybranie kogoś, kto może wykonać autoryzację za ciebie). Pamiętaj, że uwierzytelnianie i autoryzacja to różne rzeczy. OAuth to Autoryzacja (kontrola dostępu), a jeśli chcesz wdrożyć również Uwierzytelnianie (weryfikację identyfikatora), można zastosować protokół OpenID na bazie OAuth.

Wszystkie duże firmy, takie jak Facebook, Google, Github, ... korzystają obecnie z tego rodzaju uwierzytelniania / autoryzacji. Na przykład właśnie zalogowałem się na tej stronie przy użyciu mojego konta Google, co oznacza, że ​​Stackoverflow nie zna mojego hasła, otrzymuje zezwolenie od Google, gdzie moje hasło (oczywiście oczywiście zakodowane) jest zapisane. Daje to wiele korzyści, jedną z nich jest; W najbliższej przyszłości nie będziesz musiał tworzyć kilku kont na każdej stronie. Jedna strona internetowa (której ufasz najbardziej) może być używana do logowania do wszystkich innych stron internetowych. Musisz więc zapamiętać tylko jedno hasło.

Ozkan
źródło
2

OAuth zdarzyło się, gdy zakładamy konto SO za pomocą przycisku Facebook / Google.

  1. Aplikacja przekierowuje użytkownika na adres URL autoryzacji dostawcy. (Wyświetlanie strony internetowej z pytaniem użytkownika, czy chce udzielić aplikacji dostępu do odczytu i aktualizacji swoich danych).
  2. Użytkownik wyraża zgodę na przyznanie procesu aplikacyjnego.
  3. Usługodawca przekierowuje użytkownika z powrotem do aplikacji (SO), przekazując kod autoryzacji jako parametr.
  4. SO wymienia kod na przyznanie dostępu.

Źródło: dostawcy usług OAuth1

John Joe
źródło
Witam, potrzebuję pracy z interfejsem API REST, więc zainstaluj oAuth, właściwie korzystam z Magento, w localhost mam zainstalowany oAuth, na serwerze na żywo, jak mogę zainstalować, używam serwera GoDaddy VPS, jakaś pomoc? @john joe
Gem
@Rathinam cześć, II chciałbym pomóc, ale to nie moja wiedza. Tak mi przykro
John Joe
Czy jest możliwe, czy powinienem używać REST API bez oAuth? @John Joe
Gem
@Rathinam tak, to zależy od ciebie
John Joe
1

OAuth to otwarty standard autoryzacji, powszechnie używany jako sposób, w jaki użytkownicy Internetu mogą logować się na stronach internetowych osób trzecich przy użyciu swoich kont Microsoft, Google, Facebook lub Twitter bez ujawniania swojego hasła.

Yuvraj Singh Shekhawat
źródło
2
Myślę, że pomyliłeś OAuth i OpenID
A23149577
0

OAuth jest protokołem używanym przez właściciela zasobów (Facebook, Google, Tweeter, Microsoft Live itd.) W celu dostarczenia potrzebnych informacji lub udzielenia zgody na pomyślne zapisanie do systemu strony trzeciej (na przykład Twojej witryny). Najprawdopodobniej bez protokołu OAuth poświadczenia powinny być dostępne dla systemów trzeciej części, które będą nieodpowiednim sposobem komunikacji między tymi systemami.

Радослав Тодоров
źródło