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:
- 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.
- 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.
- 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.
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.
Protokół staje się łatwiejszy, gdy znasz zaangażowane strony. Zasadniczo zaangażowane są trzy strony: oAuth Provider, oAuth Client i Owner.
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.
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 .
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.
Więcej:
Szybki film
link do strony internetowej
źródło
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,
źródło
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!
źródło
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:
źródło
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.
źródło
Źródło: dostawcy usług OAuth1
źródło
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.
źródło
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