OAuth VKontakte: użyj do celów osobistych. Przepływ hasła poświadczeń
- Otwarcie wbudowanej przeglądarki ze stroną logowania
- Użytkownik proszony jest o potwierdzenie przyznania uprawnień.
- Jeśli użytkownik wyrazi zgodę, przeglądarka zostanie przekierowana do strony pośredniczącej we fragmencie (po #), do którego dodany zostanie adres URL token dostępu
- Aplikacja przechwytuje przekierowanie i odbiera je token dostępu z adresu strony
Przykład
Otwórz przeglądarkę ze stroną logowania:> GET /oauth/authorize?response_type=token&client_id=464119 HTTP/1.1 > Host: connect.mail.ru
Po przyznaniu uprawnień przez użytkownika następuje przekierowanie do standardowej strony pośredniczącej, w przypadku Mail.Ru jest to możliwe connect.mail.ru/oauth/success.html:
< HTTP/1.1 302 Found
< Location: http://connect.mail.ru/oauth/success.html#access_token=FJQbwq9&token_type=bearer&
expires_in=86400&refresh_token=yaeFa0gu
Aplikacja musi przechwycić ostatnie przekierowanie i uzyskać z adresu token_dostępu i użyj go, aby uzyskać dostęp do chronionych zasobów.
Autoryzacja poprzez login i hasło
Autoryzacja poprzez login i hasło jest prostym żądaniem POST, w wyniku którego wraca token dostępu. Schemat ten nie jest niczym nowym, ale jest uwzględniony w standardzie ogólności i zaleca się go stosować tylko wtedy, gdy nie są dostępne inne opcje autoryzacji.Przykład
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Typ zawartości: application/x-www-form-urlencoded > > grant_type=hasło&client_id=31337&client_secret=deadbeef [e-mail chroniony]&hasło=qwerty< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"SlAV32hkKG", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"8xLOxBtZp8", < }Opis w specyfikacji
Przywracanie poprzedniej autoryzacji
Zazwyczaj, token dostępu To ma Ograniczony okres stosowność. Może to być przydatne na przykład w przypadku transmisji otwarte kanały. Aby uniknąć zmuszania użytkownika do logowania się po wygaśnięciu token dostępu„i we wszystkich powyższych opcjach oprócz token dostępu„może jeszcze wrócę odśwież token. Możesz go użyć, aby uzyskać token dostępu za pomocą żądania HTTP, podobnie jak autoryzacja przy użyciu loginu i hasła.Przykład
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Typ zawartości: application/x-www-form-urlencoded > > grant_type=refresh_token&client_id=31337&client_secret=deadbeef&refresh_token=8xLOxBtZp8< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"Uu8oor1i", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"ohWo1ohr", < }Jeśli korzystasz z Mail.Ru Mail, nie musisz się martwić o bezpieczeństwo swoich danych. Dzięki OAuth — autoryzacja.
W tym artykule chcemy powiedzieć całą prawdę o tej technologii. o tym, Dlaczego to jest ważne.
Co to jest protokółOAuth?
Według statystyk każdy użytkownik ma średnio trzy skrzynki pocztowe. Sprawdzanie ich wszystkich, zwłaszcza jeśli znajdują się w różnych witrynach, nie jest zbyt wygodne. W Mail.Ru Mail możesz skonfigurować odbieranie listów ze skrzynek pocztowych w innych domenach ().
Po co używać modułu zbierającego pocztę w MailMail.Rubezpiecznie?
Zazwyczaj podczas konfigurowania kolektora należy podać imię i nazwisko, adres skrzynki pocztowej oraz hasło. Aby zapewnić bezpieczną transmisję danych, Mail.Ru Mail od dawna korzysta szyfrowanie tych danych używając protokoły SSL. Aby wyeliminować konieczność przenoszenia haseł, wdrożyliśmy zbieranie liter za pomocą OAuth. Protokół ten umożliwia programowi nie żądaj ani nie przechowuj loginów i haseł.
Jak to działa?
Załóżmy, że decydujesz się założyć w swoim urządzeniu moduł zbierania listów z poczty Yandex skrzynka pocztowa Mail.Ru. Dzięki protokołowi OAuth Poczta Mail.Ru nie będzie żądać loginu i hasła z poczty Yandex, ale poprosi jedyne prawo dostępu.
Po prostu kliknij „Dodaj skrzynkę pocztową”, a Mail będzie miał dostęp, dopóki nie zostanie przez Ciebie odwołany.
Ale nie dowiemy się o Twoim haśle.
Pomocna rada!
I na koniec, jeśli zdecydujesz się skonfigurować moduł zbierający pocztę ze swojej skrzynki pocztowej Mail.Ru na stronie trzeciej usługi pocztowe– upewnij się, że korzysta z protokołu OAuth. Jeśli nie, nie zalecamy narażania bezpieczeństwa swoich danych.
Mamy nadzieję, że ten artykuł był dla Ciebie przydatny. Jeśli masz jakieś pytania, zadaj je w komentarzach.
W 2010 roku rozpoczęły się prace nad całością Nowa wersja Protokół OAuth 2.0, który nie będzie wstecznie kompatybilny z OAuth 1.0. W październiku 2012 r. opublikowano strukturę OAuth 2.0 w dokumencie RFC 6749, a użycie nośnika tokena w dokumencie RFC 6750, przy czym oba standardy śledzą żądania komentarzy. Dodatkowe dokumenty RFC są nadal opracowywane.
Stworzenie protokołu OAuth 2.0 wymagało kilku warunków wstępnych. Po pierwsze, użycie protokołu OAuth nie jest trywialne Strona klienta. Jednym z naszych celów podczas opracowywania nowego protokołu OAuth jest uproszczenie programowania aplikacje klienckie. Po drugie, pomimo wdrożenia w standardzie trzech metod (zwanych przepływami) pozyskiwania tokena (unikalnego identyfikatora) do autoryzacji: dla aplikacji webowych, klientów desktopowych i klientów mobilnych w rzeczywistości wszystkie trzy metody są połączone w jedną. I po trzecie, protokół okazał się słabo skalowalny. Planowane jest dodanie:
- 6 nowych streamów.
- Token okaziciela.
- Uproszczony podpis.
- Tokeny krótkotrwałe z długoterminową autoryzacją.
- Rozdzielenie ról.
Warto zaznaczyć, że choć standard OAuth 2.0 nie został jeszcze zatwierdzony, to jest już używany przez niektóre serwisy. Na przykład Wykres Interfejs społecznościowy Facebook obsługuje tylko protokół OAuth 2.0.
Różnica między OAuth i OpenID
Istnieje błędne przekonanie, że OAuth jest rozszerzeniem protokołu OpenID. W rzeczywistości nie jest to prawdą. Chociaż OpenID i OAuth mają wiele podobieństw, ten ostatni jest samodzielnym protokołem, który nie jest w żaden sposób powiązany z OpenID.
Znacznik czasu i nonce
Aby zapobiec zagrożeniom związanym z żądaniami powtórki, OAuth używa wartości jednorazowej i sygnatury czasowej. Termin „nonce” oznacza, że: dany czas użyte raz i jest unikalnym, losowym ciągiem liter i cyfr, który ma na celu jednoznaczną identyfikację każdego podpisanego żądania. Mający unikalny identyfikator W przypadku każdego żądania usługodawca będzie mógł zapobiec żądaniom ponownego wykorzystania. Oznacza to, że klient generuje unikalny ciąg znaków dla każdego żądania wysyłanego do serwera, a serwer śledzi wszystkie użyte wartości jednorazowe, aby zapobiec ich ponownemu użyciu.
Używanie wartości jednorazowych może być bardzo kosztowne dla serwera, ponieważ wymagają stałego przechowywania wszystkich otrzymanych wartości jednorazowych. Aby ułatwić implementację, OAuth dodaje znacznik czasu do każdego żądania, dzięki czemu serwer może przechowywać wartość jednorazową tylko przez ograniczony czas. Gdy nadejdzie żądanie ze znacznikiem czasu wcześniejszym niż zapisany czas, zostanie ono odrzucone, ponieważ serwer nie ma już wartości jednorazowej z tego czasu.
Poświadczenia i tokeny
OAuth wykorzystuje trzy typy uprawnień: poświadczenia klienta (consumer klucz i tajne lub poświadczenia klienta), poświadczenia tymczasowe (token żądania i tajne lub tymczasowe poświadczenia) oraz tokeny (token dostępu i tajne lub poświadczenia tokena).
Poświadczenia klienta służą do uwierzytelniania klienta. Dzięki temu serwer może zbierać informacje o klientach. Korzystając ze swoich usług, serwer oferuje niektórym klientom specjalne przetwarzanie, takie jak dławienie Darmowy dostęp lub przekaż właścicielowi zasobu bardziej szczegółowe informacje o klientach próbujących uzyskać dostęp do chronionych zasobów. W niektórych przypadkach poświadczenia klienta mogą nie być bezpieczne i można ich używać wyłącznie w celach informacyjnych, np. w aplikacjach komputerowych.
Token używany jest zamiast nazwy i hasła właściciela zasobu. Właściciel zasobu nie udostępnia klientowi swoich poświadczeń, lecz raczej upoważnia serwer do wydania klientowi tokenu — specjalnej klasy poświadczeń reprezentującej udzielenie dostępu. Klient używa tokena, aby uzyskać dostęp do chronionego zasobu bez znajomości hasła właściciela zasobu.
Token składa się z identyfikatora, zwykle (ale nie zawsze) losowego zestawu liter i cyfr, który jest unikalny i trudny do odgadnięcia, oraz klucza zabezpieczającego token przed użyciem osoby nieupoważnione. Token ma ograniczony zakres i czas trwania i może zostać unieważniony w dowolnym momencie przez właściciela zasobu bez wpływu na inne tokeny wydane innym klientom.
Proces autoryzacji OAuth wykorzystuje także zestaw tymczasowych poświadczeń, które służą do określenia żądania autoryzacji. Aby dostosować się do różnych typów klientów (internetowych, stacjonarnych, mobilnych itp.), tymczasowe poświadczenia oferują dodatkową elastyczność i bezpieczeństwo.
Jak działa OAuth
Jak działa protokół OAuth
Wyjaśnijmy działanie protokołu OAuth na przykładzie. Załóżmy, że użytkownik (właściciel zasobu) chce wydrukować swoje zdjęcia (zasoby) przesłane do serwisu „photos.example.net” (serwer) za pomocą usługi drukowania „printer.example.net” (klient).
- Klient korzystając z protokołu HTTPS wysyła do serwera żądanie, które zawiera identyfikator klienta, znacznik czasu, adres wywołania zwrotnego, na który powinien zostać zwrócony token, rodzaj zastosowanego podpisu cyfrowego oraz sam podpis.
- Serwer potwierdza żądanie i odpowiada klientowi za pomocą tokenu dostępu i części wspólnego sekretu.
- Klient przekazuje token właścicielowi zasobu (użytkownikowi) i przekierowuje go do serwera w celu autoryzacji.
- Serwer po otrzymaniu tokena od użytkownika pyta go o login i hasło, a w przypadku pomyślnego uwierzytelnienia prosi użytkownika o potwierdzenie dostępu klienta do zasobów (autoryzacja), po czym użytkownik zostaje przekierowany przez serwer do strony klient.
- Klient przekazuje token do serwera poprzez TLS i żąda dostępu do zasobów.
- Serwer potwierdza żądanie i odpowiada klientowi nowym tokenem dostępu.
- Korzystając z nowego tokena, klient kontaktuje się z serwerem w celu uzyskania zasobów.
- Serwer potwierdza żądanie i udostępnia zasoby.
Przykład ten opisuje przepływ z kodem autoryzacyjnym (Przepływ kodu autoryzacyjnego). Ponadto standard OAuth 2.0 opisuje następujące przepływy:
- Niejawny przepływ dotacji
- Odświeżanie wygasłego przepływu tokenu dostępu
- Przepływ poświadczeń hasła właściciela zasobu
- Przepływ danych uwierzytelniających klienta
OAuth obsługuje dwie metody uwierzytelniania wiadomości od klienta: HMAC -SHA1 i RSA -SHA1. Istnieje możliwość wysyłania wiadomości bez podpisu, wówczas w polu typu podpisu wskazany jest „zwykły tekst”. Jednak w tym przypadku, zgodnie ze specyfikacją, połączenie pomiędzy klientem a serwerem musi zostać nawiązane poprzez SSL lub TLS.
Portale korzystające z protokołu OAuth
Dyskusja
W lipcu 2012 roku Eran Hammer, obecny redaktor standardu OAuth 2.0, po trzech latach pracy nad nowym standardem ogłosił swoją rezygnację i poprosił o usunięcie jego nazwiska ze specyfikacji. Swoje poglądy wyraził na swojej stronie internetowej. Później wygłosił prezentację. .
Notatki
Zobacz też
Spinki do mankietów
Fundacja Wikimedia. 2010.
- Otwarcie wbudowanej przeglądarki ze stroną logowania
- Użytkownik proszony jest o potwierdzenie przyznania uprawnień.
- Jeśli użytkownik wyrazi zgodę, przeglądarka zostanie przekierowana do strony pośredniczącej we fragmencie (po #), do którego dodany zostanie adres URL token dostępu
- Aplikacja przechwytuje przekierowanie i odbiera je token dostępu z adresu strony
Przykład
Otwórz przeglądarkę ze stroną logowania:> GET /oauth/authorize?response_type=token&client_id=464119 HTTP/1.1 > Host: connect.mail.ru
Po przyznaniu uprawnień przez użytkownika następuje przekierowanie do standardowej strony pośredniczącej, w przypadku Mail.Ru jest to możliwe connect.mail.ru/oauth/success.html:
< HTTP/1.1 302 Found
< Location: http://connect.mail.ru/oauth/success.html#access_token=FJQbwq9&token_type=bearer&
expires_in=86400&refresh_token=yaeFa0gu
Aplikacja musi przechwycić ostatnie przekierowanie i uzyskać z adresu token_dostępu i użyj go, aby uzyskać dostęp do chronionych zasobów.
Autoryzacja poprzez login i hasło
Autoryzacja poprzez login i hasło jest prostym żądaniem POST, w wyniku którego wraca token dostępu. Schemat ten nie jest niczym nowym, ale jest uwzględniony w standardzie ogólności i zaleca się go stosować tylko wtedy, gdy nie są dostępne inne opcje autoryzacji.Przykład
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Typ zawartości: application/x-www-form-urlencoded > > grant_type=hasło&client_id=31337&client_secret=deadbeef [e-mail chroniony]&hasło=qwerty< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"SlAV32hkKG", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"8xLOxBtZp8", < }Opis w specyfikacji
Przywracanie poprzedniej autoryzacji
Zazwyczaj, token dostępu ma ograniczony okres przydatności do spożycia. Może to być przydatne, na przykład, jeśli jest transmitowany kanałami otwartymi. Aby uniknąć zmuszania użytkownika do logowania się po wygaśnięciu token dostępu„i we wszystkich powyższych opcjach oprócz token dostępu„może jeszcze wrócę odśwież token. Możesz go użyć, aby uzyskać token dostępu za pomocą żądania HTTP, podobnie jak autoryzacja przy użyciu loginu i hasła.Przykład
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Typ zawartości: application/x-www-form-urlencoded > > grant_type=refresh_token&client_id=31337&client_secret=deadbeef&refresh_token=8xLOxBtZp8< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"Uu8oor1i", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"ohWo1ohr", < }OAuth 2 to struktura autoryzacji, która umożliwia odbieranie aplikacji ograniczony dostęp do kont użytkowników za pośrednictwem HTTP, Jak na przykład Facebook, GitHub I Cyfrowy Ocean. Działa poprzez delegowanie identyfikacji użytkownika do usługi hostującej konto użytkownika i autoryzację aplikacje stron trzecich mając dostęp do konto użytkownik. OAuth 2 zapewnia przepływy autoryzacji dla aplikacji stacjonarnych, internetowych i urządzeń mobilnych.
Niniejsza biała księga jest przeznaczona dla twórców aplikacji i zawiera przegląd ról OAuth 2, rodzaje autoryzowanych uprawnień, stosowane sytuacje i przepływy.
Zacznijmy od ról OAuth 2!
Role OAuth
Przysięga definiuje 4 role:
- Właściciel zasobu
- Klient
- Serwer zasobów
- Serwer autoryzacyjny
W kolejnych podrozdziałach omówimy każdą rolę.
Właściciel zasobu: Użytkownik
Właścicielem zasobu jest użytkownik, który korzysta z aplikacji w celu uzyskania dostępu do konta. Dostęp aplikacji do konta użytkownika ograniczony jest zakresem uprawnień autoryzacyjnych (np. odczyt lub zapis).
Serwer zasobów/autoryzacji: API
Serwer zasobów przechowuje chronione konta użytkowników, a serwer autoryzacji weryfikuje tożsamość użytkownika, a następnie wystawia tokeny dostępu do aplikacji.
Z punktu widzenia twórców aplikacji API usługi pełni obie role, zarówno jako serwer zasobów, jak i jako serwer autoryzacyjny. Przekierujemy do obu tych połączonych ról, zarówno roli Usługi, jak i roli API.
Klient: Aplikacja
Klient to aplikacja, która chce uzyskać dostęp do konta użytkownika. Zanim będzie mógł to zrobić, musi na to pozwolić użytkownik, a autoryzacja musi zostać zweryfikowana przez API.
Teraz, gdy masz już pojęcie, jakie są role OAuth, przyjrzyjmy się diagramowi przedstawiającego, jak ogólnie współdziałają ze sobą:
Oto więcej szczegółowe wyjaśnienie kroki na schemacie:
- Aplikacja żąda od użytkownika pozwolenia na dostęp do zasobów usługi
- Jeśli użytkownik zezwolił na żądanie, aplikacja otrzymuje autoryzację
- Aplikacja żąda tokenu dostępowego od serwera autoryzacyjnego (API usługi), dostarczając dowód jego autentyczności i udzielając autoryzacji
- Jeśli tożsamość aplikacji jest autentyczna, a udzielona autoryzacja jest ważna, wówczas serwer autoryzacyjny (API) wystawia token dostępu do aplikacji. Autoryzacja została ukończona.
- Aplikacja żąda zasobu z serwera zasobów (API) i udostępnia token dostępu w celu potwierdzenia swojej tożsamości
- Jeśli token dostępu jest prawidłowy, serwer zasobów (API) przekazuje zasób do aplikacji
Rzeczywisty przebieg tego procesu będzie się różnić w zależności od rodzaju stosowanego zezwolenia – tj główny pomysł. Będziemy się uczuć Różne rodzaje podane w następnej sekcji.
Rejestracja aplikacji
Zanim przy użyciu protokołu OAuth w swojej aplikacji, musisz zarejestrować swoją aplikację w serwisie. Odbywa się to poprzez formularz rejestracyjny w sekcji Deweloper lub API na stronie internetowej usługi, gdzie podasz następująca informacja(i prawdopodobnie dokładna informacja o Twojej aplikacji):
- Nazwa aplikacji
- Strona aplikacji
- Przekieruj URI lub URL oddzwonić
Przekierowanie URI jest używane tam, gdzie usługa przekieruje użytkownika po autoryzacji lub odmowie aplikacji, stąd ta część aplikacji, która będzie obsługiwać kody autoryzacyjne lub tokeny dostępu.
Identyfikator klienta i sekretny kod klient
Po zarejestrowaniu aplikacji usługa wystawi „poświadczenia klienta” w postaci identyfikatora klienta i sekretu klienta. Identyfikator klienta to publiczny ciąg znaków używany przez interfejs API usługi do identyfikacji aplikacji, a także używany do konstruowania adresów URL autoryzacji prezentowanych użytkownikom. Klucz tajny klienta służy do uwierzytelniania aplikacji w usłudze API, gdy aplikacja żąda dostępu do konta użytkownika i musi być utrzymywany w tajemnicy między aplikacją a interfejsem API.
Udzielenie Autoryzacji
W abstrakcyjny strumień protokołu Powyżej pierwsze cztery kroki opisują uzyskanie autoryzacji i tokena dostępu. Rodzaj udzielonej autoryzacji zależy od metody używanej przez aplikację do żądania autoryzacji oraz typów przyznania obsługiwanych interfejsów API. OAuth 2 definiuje 4 typy dotacji, z których każdy jest przydatny w różnych sytuacjach:
- Kod autoryzacji: używany w połączeniu z aplikacjami po stronie serwera
- Niejawność (ukrycie): używany w połączeniu z aplikacjami mobilnymi lub aplikacjami internetowymi (aplikacjami działającymi na urządzeniu użytkownika)
- : używany w połączeniu z zaufanymi aplikacjami, takimi jak te, których właścicielem jest sama usługa
- Poświadczenia klienta: używany z aplikacjami korzystającymi z dostępu API
W kolejnych sekcjach opiszemy teraz bardziej szczegółowo rodzaje świadczeń, ich przypadki użycia i przepływy.
Rodzaj dotacji: Kod autoryzacji
Typ udostępniania kodu autoryzacyjnego jest najczęściej używany, ponieważ jest zoptymalizowany pod kątem aplikacji po stronie serwera, gdzie źródło nie są wyświetlane publicznie i można zachować poufność tajnego kodu klienta. Jest to przepływ oparty na przekierowaniach, co oznacza, że aplikacja musi mieć możliwość interakcji z agentem użytkownika (tj. przeglądarką użytkownika) i odbierać kody autoryzacyjne API przesyłane przez agenta użytkownika.
Krok 1: Link do kodu autoryzacyjnego
- https://cloud.digitalocean.com/v1/oauth/authorize - punkt końcowy autoryzacji API
- typ_odpowiedzi=kod — określa, że aplikacja żąda kodu autoryzacyjnego
- client_id=CLIENT_ID — identyfikator klienta aplikacji (wartość, po której API identyfikuje aplikację)
- redirect_uri=CALLBACK_URL — miejsce, w którym usługa przekierowuje przeglądarkę po podaniu kodu autoryzacyjnego
- zakres=odczyt - określa poziom dostępu, jakiego żąda aplikacja
Gdy użytkownik kliknie w link, musi najpierw zalogować się do serwisu w celu sprawdzenia swojej tożsamości (chyba, że jest już zalogowany). Usługa poprosi ich następnie o potwierdzenie zezwolenia lub odmowy dostępu aplikacji do ich konta. Oto przykład aplikacji żądającej dostępu do konta:
Autoryzacja aplikacji
Przegląd uprawnień(prawa dostępu)
- Czytanie
Autoryzuj aplikację Zakazać
Jeżeli użytkownik kliknie opcję „Autoryzuj aplikację”, usługa przekieruje przeglądarkę do adresu URI przekierowania aplikacji, który został podany podczas rejestracji klienta wraz z kodem autoryzacyjnym. Przekierowanie wyglądałoby tak (zakładając, że adres aplikacji to „dropletbook.com”):
Krok 4: Aplikacja uzyskuje token dostępu
Aplikacja żąda tokenu dostępu z API poprzez przekazanie kodu autoryzacyjnego punkt końcowy Znacznik API wraz z dokładna informacja o identyfikacji, w tym o tajnym kodzie klienta. Oto przykładowe żądanie za pośrednictwem POST do punktu końcowego tokena DigitalOcean:
Krok 5: Aplikacja uzyskuje token dostępu
(„access_token”: „ACCESS_TOKEN”, „token_type”: „bearer”, „expires_in”: 2592000, „refresh_token”: „REFRESH_TOKEN”, „scope”: „read”, „uid”: 100101, „info”:( "imię": "Mark E. Marek","e-mail":" [e-mail chroniony] «}}
Aplikacja jest teraz autoryzowana! Może wykorzystać token do uzyskania dostępu do konta użytkownika poprzez API usługi, z ograniczeniami dostępu do czasu wygaśnięcia lub unieważnienia tokena. Jeśli token odświeżania został przekazany, można go użyć do zażądania nowych tokenów dostępu, jeśli oryginalny token wygasł.
Rodzaj dotacji: Niejawność (ukrycie)
Używany jest niejawny typ przyznania aplikacje mobilne oraz aplikacje internetowe (to znaczy aplikacje działające w przeglądarce), w przypadku których nie gwarantuje się poufności tajnego kodu klienta. Niejawny typ przyznania jest również strumieniem opartym na przekierowaniach, ale token dostępu jest przekazywany przeglądarce w celu przekazania go do aplikacji, dzięki czemu może uzyskać do niego dostęp zarówno użytkownik, jak i inne aplikacje na urządzeniu użytkownika. Ponadto ten przepływ nie uwierzytelnia tożsamości aplikacji i w tym celu opiera się na identyfikatorze URI przekierowania (który został zarejestrowany w usłudze).
Niejawny typ przyznania nie obsługuje tokenów odświeżania.
Niejawny przepływ uprawnień działa w zasadzie w następujący sposób: użytkownik jest proszony o autoryzację aplikacji, następnie serwer autoryzacji przekazuje token dostępu z powrotem do przeglądarki, która z kolei przekazuje go do aplikacji. Jeśli interesują Cię szczegóły, czytaj dalej.
W przypadku typu dotacji ukrytej użytkownik otrzymuje łącze autoryzacyjne, które żąda tokenu z interfejsu API. Ten link wygląda jak link do kodu autoryzacyjnego, z tą różnicą, że zamiast kodu prosi o token (pamiętaj, że typem żądania jest „token”):
Notatka
Gdy użytkownik kliknie w link, musi najpierw zalogować się do serwisu w celu sprawdzenia swojej tożsamości (o ile nie jest jeszcze zalogowany). Następnie zostaną poproszeni przez usługę o zezwolenie lub odmowę dostępu aplikacji do ich konta. . Oto przykład aplikacji żądającej dostępu do konta:
Autoryzacja aplikacji
Thedropletbook prosi o pozwolenie na dostęp do Twojego konta
Przegląd uprawnień(prawa dostępu)
- Czytanie
Autoryzuj aplikację Zakazać
Widzimy, że „Aplikacja Thedropletbook” prosi o pozwolenie na odczyt konta „ [e-mail chroniony] ”.
Krok 3: Przeglądarka otrzymuje token dostępu z identyfikatorem URI przekierowania
Krok 4: Przeglądarka podąża za identyfikatorem URI przekierowania
Przeglądarka podąża za identyfikatorem URI przekierowania, ale zachowuje token dostępu.
Krok 5: Aplikacja wysyła token dostępu do skryptu ekstrakcyjnego
Aplikacja zwraca stronę zawierającą skrypt, który może wyodrębnić token dostępu z całego identyfikatora URI przekierowania zapisanego w przeglądarce.
Krok 6: Token dostępu zostaje przekazany do aplikacji
Przeglądarka uruchamia dostarczony skrypt i przekazuje pobrany token dostępu do aplikacji.
Notatka: DigitalOcean nie obsługuje obecnie ukrytego typu dotacji, więc łącze wskazuje na wyimaginowany serwer autoryzacji pod adresem „oauth.example.com”.
Rodzaj dotacji: Właściciel zasobu hasła uwierzytelniającego
W przypadku typu przyznania właściciela zasobu hasła poświadczeń użytkownik podaje swoje poświadczenia usługi (nazwę użytkownika i hasło) bezpośrednio do aplikacji, która używa tych poświadczeń w celu uzyskania tokenu dostępu z usługi. Ten typ przyznania powinien być włączony na serwerze autoryzacji tylko wtedy, gdy inne przepływy nie są wykonalne. Należy z niego skorzystać także wtedy, gdy aplikacja jest zaufana przez użytkownika (np. jeśli należy do usługi lub system operacyjny komputer).
Przepływ hasła poświadczeń
Gdy użytkownik poda swoje dane uwierzytelniające aplikacji, musi ona następnie zażądać tokenu dostępu z serwera autoryzacyjnego. Żądanie POST może wyglądać mniej więcej tak:
Jeżeli poświadczenia użytkownika zostaną zweryfikowane, serwer autoryzacyjny zwraca do aplikacji token dostępu. Aplikacja jest teraz autoryzowana!
Notatka: DigitalOcean nie obsługuje obecnie typu hasła uwierzytelniającego, więc łącze wskazuje na wyimaginowany serwer autoryzacyjny pod adresem „oauth.example.com”.
Rodzaj dotacji: Poświadczenia klienta
Typ przyznania poświadczeń klienta zapewnia aplikacji dostęp do swoich danych konto osobiste praca. Może to być przydatne na przykład wtedy, gdy aplikacja chce zaktualizować swój zarejestrowany opis, przekierować URI lub uzyskać dostęp do innych danych przechowywanych na koncie usługi za pośrednictwem interfejsu API.
Przepływ danych uwierzytelniających klienta
Aplikacja żąda tokenu dostępu, wysyłając swoje dane uwierzytelniające, identyfikator klienta i sekret klienta do serwera autoryzacyjnego. Przykład Żądanie POST może wyglądać tak:
Jeżeli poświadczenia klienta zostaną zweryfikowane, serwer autoryzacyjny zwraca do aplikacji token dostępu. Od teraz aplikacja może korzystać z własnego konta!
Notatka: DigitalOcean nie obsługuje obecnie typu udostępniania poświadczeń klienta, więc łącze wskazuje na wyimaginowany serwer autoryzacji pod adresem „oauth.example.com”.
Przykład wykorzystania tokena dostępu
Gdy aplikacja uzyska token dostępu, może go użyć, aby uzyskać dostęp do konta użytkownika za pośrednictwem interfejsu API, z ograniczeniami dostępu do czasu wygaśnięcia tokenu lub jego unieważnienia.
Oto przykład użycia interfejsu API żądania kędzior. Pamiętaj, że zawiera token dostępu:
curl -X POST -H "Autoryzacja: nośnik ACCESS_TOKEN" "https://api.digitalocean.com/v2/$OBJECT" ;
Zakładając, że token dostępu jest ważny, API przetworzy żądanie zgodnie z jego Specyfikacja techniczna. Jeśli token dostępu wygasł lub jest z innego powodu nieważny, API zwróci błąd „invalid_request”.
Odśwież przepływ tokenów
Po wygaśnięciu tokena dostępu użycie go do żądania API spowoduje wyświetlenie błędu „Nieprawidłowy token”. Na tym etapie, jeśli w żądaniu uwzględniono token odświeżania podczas wydawania pierwotnego tokenu dostępu, można go użyć do zażądania nowego tokenu dostępu z serwera autoryzacyjnego. Tutaj Przykład POSTużądanie korzystające z tokena odświeżającego w celu uzyskania nowego tokena dostępu:
Wniosek
Na tym kończy się nasz przewodnik po OAuth 2. Powinieneś teraz dobrze rozumieć, jak działa OAuth 2 i kiedy należy zastosować określony przepływ autoryzacji.
Jeśli chcesz dowiedzieć się więcej o protokole OAuth 2, zapoznaj się z tymi pomocnymi zasobami:
- Jak korzystać z uwierzytelniania OAuth w DigitalOcean jako użytkownik lub programista
- Jak korzystać z API DigitalOcean w wersji 2
- Ramy autoryzacji