Oauth VKontakte. Strategie distribuce pověření. Jak odebrat OAuth2 Playground z ID klienta

Populární protokol, který umožňuje sociální služby se vzájemně integrují a umožňují bezpečným způsobem výměna osobních údajů. OAuth může propojit 2 služby, z nichž každá má svou vlastní uživatelskou základnu - to je to, co hledám v tomto případěŘíkám tomu „sociální“. Když začnete pracovat s OAuth, první pocit je, že protokol je velmi složitý a nadbytečný. V tomto článku se pokusím vysvětlit základy OAuth v lidské řeči.

Příklad křížové autorizace

Vraťme se do roku 2005 a představme si, že píšeme sociální síť. Má formulář pro import kontaktů z adresy GMail knihy. Co je potřeba pro přístup Kontakty v Gmailu? Samozřejmostí je přihlašovací jméno a heslo do schránky. Pokud vás ale požádáme o jejich zadání na našem webu, uživatel bude mít podezření, že něco není v pořádku. Kde je záruka, že zadaná hesla neuložíme na server? Chceme tedy, aby bylo zadáno heslo pouze na webu GMail a poté přístup ke kontaktům přes GMail API zajistil náš sociální síť(možná na chvíli). Domluvme se na podmínkách.
  • Spotřebitel: spotřebitel; skript pro zpracování formuláře pro import kontaktů na sociální síti.
  • Poskytovatel služeb: poskytovatel dat; GMail obsahující data adresáře, která jsou pro spotřebitele zajímavá.
  • Uživatel: uživatel, který má účet u Spotřebitele i u Poskytovatele služby.
  • Chráněný zdroj: osobní údaje; kontakty z adresáře na GMail (tj. zdroje poskytovatele služeb).
  • API poskytovatele: GMail API, které umožňuje libovolnému skriptu načíst kontakty z adresáře GMail.
Úloha OAuth- zajistit, aby měl uživatel možnost pracovat ve službě Spotřebitel (na sociální síti) s chráněnými daty Poskytovatele služby (GMail), přičemž heslo k těmto údajům zadával výhradně u Poskytovatele služby a přitom zůstal na Spotřebiteli. webové stránky. Není to tak těžké, že?

Jak se liší OAuth od OpenID?

OAuth se často označuje jako „protokol robota“, na rozdíl od OpenID jako „uživatelský protokol“. Nepleťte si je!
  1. OpenID je protokol pro zrychlenou registraci. OpenID umožňuje uživateli získat účet na jakékoli službě bez zadání hesla, pokud je již registrován někde jinde na internetu. (A pak se můžete přihlásit ke službě bez zadávání hesla a být „někde“ autorizováni.) Pokud máte například účet na Yandexu, můžete jej použít k „přihlášení“ k jakékoli službě, která podporuje autorizaci OpenID.
  2. OAuth je protokol pro autorizovaný přístup k API třetích stran. OAuth umožňuje spotřebitelskému skriptu získat omezený přístup API k datům poskytovatele služeb třetí strany, pokud dá uživatel souhlas. Tito. je to prostředek pro přístup k API.

Policejní analogie

Představte si, že jste zaměstnancem kriminálky a hledáte konec případu Krádež WebMoney pro rok 1973. Domluvme se na podmínkách:
  • Zákazník OAuth: Trestní vyšetřování.
  • Uživatel: Kriminalista.
  • Poskytovatel služeb: Kartotéka kriminálního archivu.
  1. OpenID: Zaměstnanec kriminálky (Uživatel) přijde na Kartotéku (Poskytovatel služby), u vstupu předloží Oprávnění a na místě karty třídí při hledání informací.
  2. OAuth: zaměstnanec kriminálního oddělení (uživatel) přímo z práce (spotřebitel) zavolá na kartu Index (poskytovatel služeb). Hlásí své jméno; pokud je uznán (oprávnění), žádá o poskytnutí seznamu všech trestných činů za rok 1973 (výzva API).
Jak vidíte, OpenID a OAuth jsou různé věci. OpenID umožňuje přístup k určitým zdrojům přímo na místě. OAuth zajišťuje, že některé informace jsou načteny ze vzdálené služby prostřednictvím rozhraní API.

Nástin tohoto článku

Než přejdeme k hlavní části, podívejme se, jak přesně budeme postupovat.
  1. Podívejme se na problémy, které vznikají při implementaci křížové autorizace „ručně“.
  2. Pojďme si promluvit o tom, co je to „aplikace“ a kdo je Spotřebitel.
  3. Pojďme se dotknout základů kryptografie.
  4. Označme demo aplikaci, kterou napíšeme v tomto článku.
  5. Pojďme se rozhodnout testovací server OAuth, se kterým budeme experimentovat.
  6. Pojďme si projít všechny kroky Protokol OAuth a poskytnout zdrojový kód skriptu.

O vynálezu jízdních kol

Dobrým způsobem, jak něčemu porozumět, je udělat to sami, šlápnout na všechny vyložené hrábě po cestě. Nyní znovu objevíme kolo: zkusme si představit, jak bychom vyřešili problém interakce mezi spotřebitelem a poskytovatelem služeb bez jakýchkoli standardizovaných protokolů.

Nejprve napíšeme samotný formulář pro import kontaktů z GMailu: Dále požádáme vývojáře GMail, aby zajistili, že když uživatel přejde na URI /auth.php, dostane autorizační formulář (v našem veloworldu GMail je napsán v PHP). Po úspěšném zadání hesla by měl být uživatel přesměrován na web, jehož URL je uvedeno v parametru retpath. Kromě toho musí být v URL předán určitý tajný klíč, který již lze použít pro přístup k GMail API.

Uživatel se tedy po zadání hesla vrátí na naše stránky na následující adresu: A ze skriptu /import.php se otočíme na GMail API, předáme do něj klíč Y49xdN0Zo2B5v0RR a načteme kontakty: No, pojďme počítat hrábě (protože hrboly bude pozdě počítat).

První rake: nahrazení návratové adresy retpath

Jistě, uhodli jste, že útočník nejprve umístí odkaz na svůj web a donutí vás na něj kliknout. V důsledku toho obdrží tajný klíč, který vrátil GMail, a tedy vaše kontakty:

Druhá hra: „odposlouchávání“ tajného klíče

Řekněme, že jsme nějakým způsobem ochránili retpath a nyní může ukazovat pouze na náš web. Problém s tajným parametrem ale zůstává Tajemství může být sledováno zezadu nebo zachyceno nasloucháním WiFi provozu. Nebo jednou bude mít váš web chybu zabezpečení XSS, která vám umožní „ukrást“ tajný klíč. Díky tajemství hodnoty bude moci útočník číst vaše adresář. To znamená, že tajemství musí být chráněno před zachycením (ideálně by nemělo být přenášeno přes URL vůbec).

Rake číslo tři: příliš mnoho přesměrování

Pokud každé volání API vyžaduje jiné tajemství, budeme muset zorganizovat tolik přesměrování na web poskytovatele služeb, kolik je volání. S intenzivním pomocí API funguje to velmi pomalu a je to dost nepohodlné...

Rake číslo čtyři: špatná identifikace spotřebitele

GMail samozřejmě chce vědět, kdo používá jeho API. Povolit přístup k některým stránkám a odepřít přístup jiným... To znamená, že při vytváření požadavku ve formuláři pro import kontaktu musí být spotřebitel (stránka) „představen“ poskytovateli služeb (GMail). V našem případě tuto funkci částečně plní retpath (název webu v ní), ale tato metoda není univerzální, protože Mechanismus „prezentace“ musí být také aktivován při volání metod API.

Nadace OAuth

Je pozoruhodné, že stále zbývá mnoho „podvodních hrábí“. Nebudu je zde popisovat, protože tyto hrábě leží v Mariánském příkopu (hluboký, 10920 m). Popis zranitelností by zabral tucet stránek. Skočím tedy rovnou do popisu OAuth, kde jsou již všechny problémy vyřešeny.

Aplikace = spotřebitel + přístup k API

Při práci s OAuth je důležité, aby se pojem spotřebitel neomezoval na význam „stránky“. Spotřebitel je něco aplikace, a kde se nachází, není tak důležité. Příklady spotřebitelů z skutečný život: Ale jen s OAuth nemůžete udělat nepořádek. Ve skutečnosti vše, co OAuth poskytuje, je možnost přihlásit se vzdálená služba(poskytovatel služeb) a provádět autorizované požadavky na rozhraní API. Nezáleží na tom, jak je toto API strukturováno: může to být čistý SOAP, přístup REST atd. Hlavní věc je, že každá metoda API bere jako vstupní speciální parametry předané podle protokolu OAuth.

Token = klíč + tajemství

Jeden z principů OAuth uvádí, že ne tajné klíče by neměly být v žádostech předávány otevřené (proč jsme diskutovali v příkladu výše). Proto protokol pracuje s konceptem Tokenu. Token je velmi podobný páru login + heslo: login - otevřené informace a heslo znají pouze odesílající a přijímající strany. V podmínkách OAuth se analog přihlášení nazývá klíč a analog hesla se nazývá tajné. Situace, kdy Tajemství zná pouze odesílatel a příjemce, ale nikdo jiný, se nazývá Sdílené tajemství.

Pokud se tedy spotřebitel a poskytovatel nějakým způsobem dohodnou na sdíleném tajemství, mohou si otevřeně vyměňovat odpovídající klíče v adrese URL, aniž by se museli obávat, že tyto klíče budou zachyceny. Jak ale chránit adresy URL s klíči před paděláním?

Zpráva = dokument + digitální podpis

„Digitální podpis“ zní děsivě, ale ve skutečnosti je to docela zřejmá věc. Když se na dokument podepisujete perem, potvrzujete, že dokument jste napsali vy a ne někdo jiný. Váš podpis je jakoby „přidán“ k dokumentu a jde s ním v „jedné sadě“.

Stejně tak je k bloku dat přidán digitální podpis, aby bylo zajištěno, že osoba, která data vygenerovala, se nevydává za někoho jiného. Digitální podpis nezašifruje dokument, pouze zaručí jeho pravost! Stejné sdílené tajemství, které zná příjemce i odesílatel, ale nikdo jiný, vám umožňuje podepsat.

Jak to funguje? Nechte naše $sharedSecret = 529AeGWg a zašeptali jsme to do ucha přijímající straně. Chceme odeslat zprávu „Můj telefon 1234567“ pomocí garantovaná ochrana z falšování útočníkem.

  1. Spotřebitel přidá ke zprávě digitální podpis celkový pohled- $převod = $zpráva . "-". md5($zpráva . $sharedSecret); // $transfer = "Můj telefon je 1234567" . "-". md5("Můj telefon je 1234567" . "529AeGWg")
  2. Poskytovatel služeb vezme data, rozdělí je zpět na 2 části – $message a $signature – a provede přesně stejnou operaci: $signatureToMatch = md5($message . $sharedSecret); // $signatureToMatch = md5("Můj telefon je 1234567" . "529AeGWg");

Pak už zbývá jen porovnat výslednou hodnotu $signatureToMatch s tím, co bylo v přijatých datech $signature, a nahlásit falešný, pokud se hodnoty neshodují.

Ukázka fungování OAuth na jednoduché aplikaci jako příklad
  1. Abychom získali skutečný pocit z OAuth, potřebujeme dvě věci: Skript, který implementuje klientská část
  2. protokol. Napsal jsem jen takový malý PHP skript (odkaz na zip archiv). Toto je widget, který lze vložit do stránek PHP. Testovací OAuth server, na kterém můžeme experimentovat. Pro tento účel je vhodné použít RuTvit: existuje stránka http://rutvit.ru/apps/new, která vám umožňuje přidat testovací aplikace
za 30 sekund. (Mimochodem, návratovou adresu URL ve formuláři uvádět nemusíte – stále ji předáváme z testovacího skriptu.)

Když se podíváte na kód ukázkového skriptu a přečtete si vysvětlení níže v článku, pochopíte podrobnosti protokolu.

  1. Tento widget můžete vložit do libovolné webové stránky PHP pouhým zkopírováním jeho kódu a úpravou rozvržení. Zobrazí se všechny tweety ze služby RuTvit označené zadaným hash tagem a je také možné přidávat nové tweety (zde přichází na řadu OAuth). Widget využívá RuTvit API a autorizaci OAuth, která se mimochodem shoduje se standardem Twitter API. Tento skript můžete spustit na svém testovacím serveru. Chcete-li to provést, musíte provést tři kroky:
  2. Stáhněte si kód skriptu a nasaďte jej do libovolného vhodného adresáře na vašem webovém serveru.
  3. Zaregistrujte svou novou testovací aplikaci na serveru OAuth.

Po registraci aplikace nahraďte parametry OA_CONSUMER_KEY a OA_CONSUMER_SECRET ve skriptu hodnotami přijatými ze serveru.

Registrace a nastavení aplikace Pojďme si promluvit o tom, odkud aplikace pocházejí a jak se o nich poskytovatel služeb dozví. Je to docela jednoduché: Poskytovatel služeb má speciální formulář


Po registraci vaší aplikace dostanete 5 parametrů, které jsou nutné pro práci s OAuth. Takto mohou vypadat:


Zde jsou spotřebitelský klíč a zákaznický tajný klíč jakýmsi „přihlašovacím jménem + heslem“ vaší aplikace (pamatujete si výše uvedený rozhovor o tokenech? Toto je jen jeden z nich). Dovolte mi připomenout, že tajemství spotřebitele je sdílené tajemství, které zná pouze odesílatel a příjemce, ale nikdo jiný. Zbývající 3 hodnoty určují adresy URL služeb, jejichž význam nyní zvážíme.

OAuth = token požadavku na načtení + přesměrování na autorizaci + token přístupu k načtení + rozhraní API volání

V příkladu s GMail jsme použili 2 typy vzdálených hovorů: a) přesměrování přes prohlížeč; b) přístup k API ze skriptu.

A odhalili jsme řadu bezpečnostních problémů, což naznačuje, že by mělo existovat více výzev. To je to, co se děje v OAuth: další přechodné požadavky jsou přidány ze skriptu spotřebitele k poskytovateli, který pracuje s tokeny. Pojďme se na ně podívat.

  1. Zpracování odeslání formuláře. Toto není součástí OAuth, ale součástí naší aplikace. Před přístupem k poskytovateli rozhraní API musíme od uživatele obdržet pracovní příkaz pro tuto akci. Zde je příklad takové „objednávky“:
  2. Fetch Request Token (interní požadavek).
    • Skript Consumer přistupuje Požádat o adresu URL tokenu Poskytovatel: například api.rutvit.ru/oauth/request_token. Požadavek obsahuje spotřebitelský klíč – „přihlášení k aplikaci“ a samotný požadavek je podepsán pomocí tajného klíče spotřebitele – „hesla aplikace“, které jej chrání před paděláním.
    • V reakci na to poskytovatel vygeneruje a vrátí token „naplněný odpadky“ nazvaný token požadavku. Budeme ji potřebovat později, takže ji musíme někam uložit – například do proměnné relace $S_REQUEST_TOK.
  3. Přesměrování na Autorizaci (přes přesměrování v prohlížeči). Nyní má naše aplikace jedinečný token požadavku. K použití tohoto tokenu je nutné získat povolení od uživatele, tzn. zeptej se ho autorizovat token požadavku.
    • Spotřebitel přesměruje prohlížeč na speciální Autorizovat URL Poskytovatel: například api.rutvit.ru/oauth/authorize. Tokenový klíč požadavku je předán v parametrech.
    • Poskytovatel svému uživateli zobrazí autorizační formulář a pokud je oprávněn, přesměruje prohlížeč zpět. kde přesně? A to označujeme v parametru oauth_callback.
  4. Fetch Access Token (interní požadavek). Prohlížeč se tedy po sérii přesměrování vrátil do naší aplikace. To znamená, že autorizace u poskytovatele byla úspěšná a token požadavku může fungovat. V OAuth pro zabezpečení má však každý token svůj vlastní, přísně omezený účel. Například Request Token se používá pouze k obdržení potvrzení od uživatele a nic jiného. Pro přístup ke zdrojům potřebujeme získat nový token – Access Token – nebo, jak se říká, „vyměnit token žádosti za přístupový token“.
    • Spotřebitel odkazuje Adresa URL přístupového tokenu- například api.rutvit.ru/oauth/access_token - a požádá o udělení přístupového tokenu místo tokenu požadavku, který má. Požadavek je podepsán digitálním podpisem na základě tajného klíče požadavku.
    • Poskytovatel vygeneruje a vrátí přístupový token naplněný odpadky. Ve svých tabulkách také uvádí, že tento přístupový token má povolen přístup k rozhraní API. Naše aplikace si musí ponechat přístupový token, pokud bude v budoucnu používat API.
  5. Call API (interní požadavek). Nyní máme přístupový token a můžeme předat jeho klíč při volání metod API.
    • Spotřebitel vygeneruje požadavek na API Poskytovatele (například pomocí POST požadavku podle ideologie REST). Požadavek obsahuje klíč přístupového tokenu a je podepsán pomocí sdíleného tajemství tohoto tokenu.
    • Poskytovatel zpracuje volání API a vrátí data do aplikace.

Konec skriptu: výstup widgetu

Konec skriptu by měl být jasný bez podrobných vysvětlení.
Výpis 14: Konec skriptu: výstup widgetu
// end case ) ) // Získejte všechny dostupné tweety. $text = file_get_contents("http://api.rutvit.ru/search.xml?rpp=5&q=" . urlencode("#" . TAG)); $TWEETS = new SimpleXMLElement($text); // Zkratka pro zobrazení zprávy s překódováním a citací. function e($text, $quote = 1) ( $text = iconv("utf-8", ENCODING, $text); echo $quote? htmlspecialchars($text) : $text; ) ?>
stav jako $tweet) (?>
user->screen_name)?>: text_formatted, 0)?>
?action=form_is_sent" style="margin: 1em 0 0 0">

Užitečné odkazy na OAuth

  • rutvit
Přidejte značky

V důsledku toho může klientská aplikace využívající AdWords API přistupovat k účtu AdWords bez uživatelské e-mailové adresy a hesla.

Vytváření přihlašovacích údajů OAuth2

Chcete-li vytvořit přihlašovací údaje OAuth2, postupujte podle následujících kroků.

Definování typu aplikace

Nejprve je třeba určit typ aplikace, kterou chcete vytvořit. V AdWords API jsou dva typy aplikací:

  • instalovatelná aplikace(doporučeno);
  • webová aplikace.

Pomocí níže uvedené tabulky určete typ aplikace, kterou potřebujete.

Co si vybrat Situace
Instalovatelná aplikace(doporučeno)
  • Všechny své účty AdWords spravujete pomocí jednoho účtu správce nejvyšší úrovně.
  • Právě začínáte nebo chcete začít rychle?
  • Vaše aplikace bude fungovat s jednou sadou účtů AdWords s více uživateli.
Webová aplikace
  • Chcete pomocí ověřování udělit různým uživatelům různá přístupová práva k údajům vašeho účtu AdWords.
  • Potřebujete vytvořit více sad přihlašovacích údajů, například pro správu účtů třetích stran.
  • Vaše aplikace vyžaduje adresy URL zpětné volání, není podporováno v nainstalovaných aplikacích.
Pozor!I když vyvíjíte webovou aplikaci, stále si můžete vybrat, kterou aplikaci nainstalujete. Hlavní rozdíl je v tom, zda je po vydání tokenu nutné provést zpětné volání. Pokud například ke správě všech svých účtů AdWords používáte jeden účet správce nejvyšší úrovně, aplikace, kterou nainstalujete, musí být registrována, i když je klientská aplikace přístupná přes internet. Poznámka.jsou diskutovány níže. Pokud nepožadujete funkčnost servisního účtu, důrazně doporučujeme použít proces autorizace pro instalovatelnou nebo webovou aplikaci.

Vytvoření ID klienta a tajného kódu

Jakmile určíte typ aplikace, klikněte na příslušnou kartu níže a podle pokynů vytvořte ID klienta a tajný klíč.

Instalovatelná aplikace

  1. OTEVŘENO
  2. Vytvořte projekt Vytvořit.
  3. Vytvořte přihlašovací údaje a pak - ID klienta OAuth.
  4. Uložit
  5. V sekci Typ aplikace vybrat Jiné typy a poskytnout požadované informace.
  6. Klikněte Vytvořit.
  7. identifikátor A tajný klíč
Webová aplikace
  1. OTEVŘENO
  2. Z rozbalovací nabídky projektů vyberte Vytvořte projekt, poté zadejte název projektu a v případě potřeby změňte jeho ID, poté klikněte na tlačítko Vytvořit.
  3. Na stránce Přihlašovací údaje vyberte Vytvořte přihlašovací údaje a pak - ID klienta OAuth.
  4. Můžete být požádáni o zadání názvu produktu. V tomto případě klikněte Přizpůsobte okno žádosti o přístup, zadejte požadované informace a klikněte Uložit pro návrat na obrazovku Přihlašovací údaje.
  5. V sekci Typ aplikace vybrat Webová aplikace. Podle pokynů zadejte zdroje JavaScriptu a/nebo URI přesměrování.
  6. Klikněte Vytvořit.
  7. Na stránce, která se objeví, zkopírujte identifikátor A tajný klíč klient - budete je potřebovat při nastavování klientské knihovny.

Podle pokynů níže nakonfigurujte použití přihlašovacích údajů OAuth2 s klientskou knihovnou vašeho jazyka.

Poznámka.Pokud se rozhodnete nepoužívat některou z našich klientských knihoven, budete muset implementovat procesy pro sebe nebo pro sebe.

Hřiště OAuth2

Alternativní možností pro vytvoření přihlašovacích údajů OAuth2 je použití Hřiště OAuth2. V kombinaci s Google API Console vám tento systém umožňuje vytvářet tokeny OAuth2 sami.

Systém OAuth2 Playground je určen pro uživatele, kteří potřebují přístup k účtům pouze pro jedenúčet správce nebo uživatel AdWords. Pokud potřebujete vyzvat k zadání přihlašovacích údajů pro více uživatelů, je lepší použít klientské knihovny, jak je popsáno výše.

Nastavení

Varování.K použití Hřiště OAuth2, musíte vytvořit ID klienta Pro . Tento jediný typ aplikace, která pracuje s OAuth2 Playground. Přečtěte si více v části výše.

Jak získat ID klienta a tajný klíč

  1. OTEVŘENO
  2. Vyberte existující projekt z rozbalovací nabídky nebo vytvořte nový.
  3. Na stránce Přihlašovací údaje vyberte Vytvořte přihlašovací údaje a pak - ID klienta OAuth.
  4. V sekci Typ aplikace vybrat Webová aplikace.
  5. V sekci přidejte následující řádek: https://site/oauthplayground
  6. Klikněte Vytvořit.
  7. Napište to identifikátor A tajný klíč klienti uvedení na zobrazené stránce.

Budete je potřebovat v dalším kroku.

Varování.Jak vytvořit tokeny

To, ke kterému účtu Google jste v prohlížeči přihlášeni, určuje, ke kterým účtům AdWords budete mít přístup pomocí vámi vytvořených přihlašovacích údajů OAuth2. Může být lepší provést tyto kroky v anonymním režimu nebo bez přihlášení k účtu Google. Je pravděpodobné, že budete muset použít přihlašovací údaje, které se liší od účtu, ve kterém jste byli, když jste obdrželi ID klienta a tajný klíč.

Jak odebrat OAuth2 Playground z ID klienta Protože už máte obnovovací token

  1. , již nemusíte používat OAuth2 Playground jako svůj vyřešený URI přesměrování. Chcete-li tento systém odebrat ze seznamu, postupujte takto:
  2. Přejít na .
  3. Vyberte svůj projekt z rozbalovací nabídky.
  4. Na stránce Přihlašovací údaje vyberte název ID klienta. Odeberte https://site/oauthplayground z pole Povolené URI přesměrování . Vezměte prosím na vědomí, že musíte odejít minimálně jeden
  5. Klikněte Uložit.

Přesměrování URI.

Takže máte své přihlašovací údaje OAuth. Nyní se můžete dotazovat na AdWords API a používat je s požadovanou klientskou knihovnou.

Tato část popisuje, jak získat přístup k AdWords API pomocí servisních účtů.

Účet služby je účet, který patří aplikaci, nikoli jednotlivému koncovému uživateli. Účty služeb poskytují interakci mezi webovou aplikací a službou Google. Vaše aplikace volá API jménem servisního účtu, aniž by přímo zapojovala uživatele.

AdWords API umožňuje přístup k servisnímu účtu napříč doménami G Suite.

Účet služby implementuje proces OAuth2, který namísto autorizace uživatele používá soubor klíče, který je přístupný pouze vaší aplikaci.

Používání servisních účtů poskytuje dvě významné výhody:

  • Autorizace přístupu aplikace k Google API se provádí během fáze nastavení. Vyhnete se tak potížím s vyžadováním zásahu uživatele nebo ukládáním tokenů do mezipaměti v jiných tocích OAuth2.
  • Předstírání identity jiných uživatelů v aplikaci, je-li to nutné, se provádí v rámci schvalovacího procesu OAuth2.
Poznámka. Pokud nepoužíváte funkce specifické pro doménu, jako je zosobnění, se místo servisních účtů důrazně doporučuje použít proces pro . Instalovatelné procesy OAuth2 a webové aplikace vyžadují účast uživatele pouze jednou, a to v okamžiku udělení přístupu k účtu.

Alternativa k servisním účtům

Servisní účty se široce používají k poskytování programového přístupu k rozhraním API pomocí protokolu OAuth2 bez zásahu uživatele.

Nastavení takových účtů pro práci s AdWords API však není snadné. Jednodušší alternativa je s trvalým obnovovacím tokenem. Tento přístup umožňuje aplikaci kdykoli požádat o nové přístupové tokeny.

V rámci tohoto procesu musíte nakonfigurovat autorizaci aplikací prostřednictvím klientské knihovny, jak je popsáno výše. Toto je potřeba provést pouze jednou, protože obnovovací tokeny Google OAuth2 nikdy nevyprší.

Požadavky

  • Doména G Suite, kterou vlastníte, například mydomain.com nebo mybusiness.com.
  • Vývojářský token AdWords API a nejlépe testovací účet.
  • pro používaný jazyk.

Nastavení přístupu ke klientskému účtu

Nejprve musíte vytvořit klíč servisního účtu v konzole Google API.

  1. Přihlaste se ke svému účtu G Suite a otevřete .
  2. Z rozbalovací nabídky projektů vyberte Vytvořte projekt, zadejte požadované informace a klikněte na tlačítko Vytvořit. Nový projekt se objeví v aktivním seznamu.
  3. Z nabídky v levém horním rohu vyberte IAM a administrace a pak - Servisní účty v menu vlevo.
  4. Klikněte Vytvořte servisní účet v horní části stránky.
  5. Zadejte název servisního účtu.
  6. Zaškrtněte políčko Vytvořte nový soukromý klíč a vyberte typ klíče JSON.
  7. Zaškrtněte políčko Povolte delegování přístupu k datům ve své doméně G Suite a zadejte název produktu pro okno žádosti o přístup.
  8. Klikněte Vytvořit. Soubor klíče JSON se začne stahovat. Uložte soubor na bezpečném místě, kam máte přístup pouze vy.
  9. Na stránce Servisní účty objeví se nový servisní účet.
Poznámka. Protože zosobnění uživatele lze ovládat pouze Na úrovni domény, abyste mohli používat servisní účty a schvalovací proces se službami Google OAuth2, budete potřebovat vlastní doménu registrovanou v G Suite. Všichni uživatelé domény používající účet služby s příslušnými oprávněními se mohou vydávat za libovolného uživatele domény.

Bezpečnostní problémy

Protože je služba G Suite spravována na úrovni domény, musíte bezpečně chránit soubor klíče, který umožňuje autorizovaným účtům přístup ke službám Google. To je zvláště důležité vzhledem k tomu, že poskytujeme servisnímu účtu možnost vydávat se za jakéhokoli uživatele domény.

Kromě toho se doporučuje, aby každý servisní účet měl přístup pouze k jednomu rozhraní Google API. K tomu slouží pole rozsah, který je popsán v další části. Toto preventivní opatření umožňuje omezit množství dat otevřených neoprávněnému přístupu v případě kompromitace souboru klíče.

Jak poskytnout možnosti předstírání identity

Chcete-li servisnímu účtu udělit možnosti zosobnění, postupujte takto:

Nyní můžete přistupovat ke svému účtu AdWords pomocí servisního účtu v rámci schvalovacího procesu OAuth2.

Nastavení klientské knihovny

Chcete-li zobrazit pokyny pro nastavení knihovny klienta, vyberte jazyk.

Poznámka.Pokud se rozhodnete nepoužívat některou z našich klientských knihoven, budete muset proces implementovat sami.

Optimalizace požadavků OAuth2

Pokud vaše aplikace nepoužívá sdílení pověření, může to výrazně zvýšit počet žádostí odeslaných do Googlu. V důsledku toho mohou naše servery na takovou aplikaci uvalit omezení, což sníží rychlost jejího provozu.

Tato část popisuje, jak optimalizovat správu pověření OAuth2, aby vaše aplikace efektivněji interagovala s AdWords API.

Pozor!Pod pojmem pověření To se týká celé sady atributů pověření OAuth2, včetně přístupového tokenu a data vypršení jeho platnosti.

Strategie distribuce pověření

Distribuce přihlašovacích údajů mezi požadavky API zlepšuje výkon a také zabraňuje režii a chybám způsobeným porušením omezení.

Strategie distribuce pověření závisí na návrhu aplikace.

Ve vícevláknových aplikacích musíte použít stejná pověření pro relaci každého vlákna.

Ve víceprocesových a distribuovaných aplikacích je nutné implementovat nějakou infrastrukturu pro předávání přihlašovacích údajů mezi procesy. Kromě toho musíte zajistit, aby se vlákna neblokovala a nedocházelo ke sporům.

V aplikaci, která je jak víceprocesová/distribuovaná, tak vícevláknová, musí každý proces kombinovat obě strategie.

Níže jsou uvedeny strategie pro ověření jednoho účtu AdWords, jako je například účet správce nejvyšší úrovně v hierarchii.

Dále popisuje, jak tyto strategie přizpůsobit pro .

Vícevláknové aplikace

Ve vícevláknových aplikacích musí být přihlašovací údaje k dispozici pro různá vlákna. Aktualizace pověření musí být prováděny synchronně, aby se předešlo konfliktům.

Tento diagram ukazuje vlákna, která za běhu předávají požadavky do AdWords API. Používá se sdílený fond relací (uživatelů). Všimněte si, že každá relace musí používat stejný objekt pověření. V reakci na každý požadavek API vlákno obdrží odpovídající relaci (uživatele). Pokud je třeba obnovit přístupový token, musí to být provedeno synchronně, aby se předešlo sporu. Jinými slovy, objekt pověření musí být bezpečný pro vlákna.

Klientské knihovny usnadňují předávání pověření mezi vlákny. Každá klientská knihovna má objekt relace (nebo uživatele) s pověřeními, které opakovaně používá během svého životního cyklu. Chcete-li používat přihlašovací údaje napříč relacemi, musíte je použít při vytváření každé relace. Ve všech klientských knihovnách je pověření objektem bezpečným pro vlákna, který se synchronně aktualizuje, když vyprší platnost přístupového tokenu.

Například v knihovně klienta Java byste vytvořili jedinou třídu Credential a použili ji pro všechny relace.

Multiprocesní a distribuované aplikace

Ve víceprocesových a distribuovaných aplikacích musí distribuce pověření probíhat nepřetržitě. Chcete-li se vyhnout konfliktní situaci, kdy se více serverů pokouší aktualizovat pověření současně (což má za následek nadměrné požadavky na aktualizaci), doporučujeme aktualizaci vynutit a poskytnout aktualizovaná pověření všem procesům a serverům.

Jedna úloha nebo služba může například pravidelně aktualizovat pověření a odeslat je do úložiště dat, kde je budou používat různé servery.

Diagram ukazuje periodickou aktualizaci přihlašovacích údajů a zaznamenávání jejich vlastností v datovém úložišti. Všechny servery poté obdrží pověření před odesláním požadavku na rozhraní API.

Aktualizovat úkol

Úloha aktualizace pravidelně aktualizuje přihlašovací údaje a odesílá je do úložiště dat. Tato úloha by neměla čekat na vypršení platnosti aktuálních přihlašovacích údajů, protože to způsobí, že aplikace bude nějakou dobu mimo provoz kvůli nedostatku platných přihlašovacích údajů.

Nejlepší alternativou je vynutit si pravidelné obnovování, které pokaždé nahradí přihlašovací údaje v úložišti dat novými. Aktualizační úloha by měla být provedena v dostatečném předstihu před vypršením aktuálních přihlašovacích údajů, aby byl dostatek času pro případ, že dojde k dočasné chybě. Můžete začít provedením aktualizace každých 15 minut.

Poznámka.Pokud během zpracovávání požadavku API vyprší platnost přístupového tokenu pověření, požadavek se přesto provede. Pokud například vytvoříte dlouhotrvající dotaz a zbývá vám přístup méně než minutu, výsledky se přesto vrátí.

Ukládání dat

Úložiště dat se používá k poskytování přihlašovacích údajů různým procesům a serverům.

K tomu můžete použít existující datový sklad nebo vytvořit specializovaný, přes který budou servery přijímat přihlašovací údaje. Možná řešení zahrnují servery pro ukládání do mezipaměti (jako je Memcached nebo Infinispan) a úložiště dat NoSQL (jako je MongoDB).

Hlavním účelem datového skladu je poskytovat spolehlivé rozhraní všem serverům přistupujícím k API. Jeho provoz musí být optimalizován pro rychlé čtení dat: servery a procesy budou číst přihlašovací údaje častěji, než jsou aktualizovány.

Nezapomeňte si uchovat své přihlašovací údaje v bezpečí.

Při ukládání přihlašovacích údajů musíte uložit vlastnost expiry_time (aktuální čas + expires_in) a refresh_token spolu s vlastností access_token. Vlastnost expiry_time (datum vypršení platnosti tokenu) se vypočítá pomocí následujícího vzorce: access_token update request time + expires_in time (datum vypršení platnosti tokenu).

Serverový fond

Každý server ve fondu před odesláním požadavku získá nejnovější přihlašovací údaje z úložiště dat. Dokud bude úloha aktualizace probíhat úspěšně, budou pověření platná. Pokud však aktualizační úloha nebo úložiště dat selže, musí existovat nouzový mechanismus.

Pokud server nebo proces nemůže získat přihlašovací údaje z úložiště dat nebo pokud platnost přihlašovacích údajů vypršela, server musí aktualizovat své přihlašovací údaje, aby umožnil aplikaci pokračovat v práci s rozhraním API, dokud nebude problém vyřešen.

Ve vícevláknových procesech musíte použít stejnou strategii pro distribuci pověření mezi vlákna.

Ověření více účtů

Identifikační údaje vytvořené pro účet správce AdWords lze použít k přístupu ke všem podřízeným účtům. Uživatelé s jedním účtem správce obvykle potřebují pouze vytvořit přihlašovací údaje pro účet správce nejvyšší úrovně, aby mohli autorizovat aplikaci pro všechny podřízené účty AdWords.

V ostatních případech potřebuje aplikace přístup k účtům AdWords, které spolu v hierarchii účtů správce nesouvisí. Tato situace vyžaduje, abyste vytvořili a spravovali více přihlašovacích údajů pro různé účty, například pro každý klientský účet AdWords, ke kterému máte přístup, nebo pro každý účet správce nejvyšší úrovně v nezávislých hierarchiích.

Tyto strategie můžete dodržovat pro obě aplikace s minimálními změnami. Při používání sdíleného úložiště musí být přihlašovací údaje indexovány pomocí ID účtu customerId, aby bylo zajištěno, že jsou přihlašovací údaje přidruženy k požadovanému účtu. Úloha aktualizace je navíc musí aktualizovat včas. Po připojení nového účtu jej možná budete muset spustit.

A konečně, ve vícevláknových aplikacích musíte objekt pověření distribuovat pouze mezi vlákna běžící v účtu, ke kterému je přidružen.

Jak funguje OAuth2

Poznámka. AdWords API zatím nepodporuje souběžné přihlášení prostřednictvím žádosti o přístup k datům (hybridní design) nebo delegování oprávnění na úrovni domény (2LO).

Rozsah

Přístupový token může poskytovat různé stupně přístupu k datům. Parametr rozsahu proměnné definuje sadu zdrojů a operací, ke kterým token poskytuje přístup. Když žádáte o přístupový token, vaše aplikace odešle jednu nebo více hodnot do parametru oboru.

Níže je uveden aktuální a starší rozsah rozhraní AdWords API.

Offline přístup

Klientská aplikace, která používá rozhraní AdWords API, obvykle vyžaduje offline přístup. K tomu může dojít, pokud vaše aplikace potřebuje spouštět dávkové úlohy, zatímco uživatel prohlíží váš web bez připojení k internetu.

Nainstalované aplikace ve výchozím nastavení používají offline přístup.

hlavička HTTP požadavku

Hlavička HTTP v každém požadavku na server AdWords API musí obsahovat následující formulář:

Oprávnění: nositel THE_ACCESS_TOKEN

POST ... HTTP/1.1 Host: ... Autorizace: Bearer 1/fFAGRNJru1FTz70BzhT3Zg Content-Type: text/xml;charset=UTF-8 Content-Length: ...

Přístup a obnovení tokenů

Ve většině případů musí být obnovovací token uložen na bezpečném místě, protože může být později potřeba. Další informace o vyžádání přístupových a obnovovacích tokenů naleznete v následujících průvodcích:

Když vyprší platnost přístupového tokenu

Přístupový token má datum vypršení platnosti, které závisí na hodnotě expires_in . Přístupový token, jehož platnost vypršela, lze obnovit pomocí obnovovacího tokenu, ale naše klientské knihovny to dělají automaticky.

Není-li uvedeno jinak, je obsah této stránky licencován v rámci licence Creative Commons Attribution 3.0 a ukázky kódu jsou licencovány v rámci licence Apache 2.0. Podrobnosti viz naše. Java je registrovaná ochranná známka společnosti Oracle a/nebo jejích přidružených společností.

Aktualizováno 24. září 2018

V roce 2010 byly zahájeny práce na kompletně nová verze Protokol OAuth 2.0, který nebude zpětně kompatibilní s OAuth 1.0. V říjnu 2012 byl rámec OAuth 2.0 publikován v RFC 6749 a použití nosiče tokenů v RFC 6750, oba standardy sledují požadavky na komentáře. Další RFC se stále vyvíjejí.

Pro vytvoření OAuth 2.0 bylo několik předpokladů. Za prvé, OAuth je zcela netriviální pro použití na straně klienta. Jedním z našich cílů při vývoji nového OAuth je zjednodušit vývoj klientské aplikace. Za druhé, navzdory implementaci tří metod (nazývaných toky) uvedených ve standardu pro získání tokenu (jedinečného identifikátoru) pro autorizaci: pro webové aplikace, desktopové klienty a mobilní klienti, ve skutečnosti jsou všechny tři metody sloučeny do jedné. A za třetí, protokol se ukázal jako špatně škálovatelný. Plánuje se přidat:

  • 6 nových streamů.
User-Agent Flow – pro klienty běžící uvnitř uživatelského agenta (obvykle webový prohlížeč). Stream webového serveru ( webový server Flow - pro klienty, kteří jsou součástí serverové webové aplikace, přístupné přes HTTP požadavky. Device Flow – Vhodné pro klienty běžící na omezených zařízeních, ale kde má koncový uživatel samostatný přístup k prohlížeči na jiném počítači nebo zařízení. Stream uživatelského jména a hesla (Uživatelské jméno a Heslo Tok – Používá se v případech, kdy uživatel důvěřuje klientovi, že zpracuje jeho přihlašovací údaje, ale přesto by nebylo žádoucí povolit klientovi uložení uživatelského jména a hesla. Toto vlákno je vhodné pouze tehdy, když existuje vysoký stupeň důvěra mezi uživatelem a klientem. Tok přihlašovacích údajů klienta – Klient používá své přihlašovací údaje k získání tokenu.
  • Tok tvrzení – klient odešle tvrzení, jako je tvrzení SAML, na autorizační server výměnou za token.
Aplikace běží dál stolní počítač nebo mobilní zařízení lze implementovat pomocí výše uvedených vláken.
  • Token na doručitele.
Způsob autorizace je podobný
  • stávající metoda
autorizace pomocí cookies. V tomto případě je token přímo použit jako tajemství (samotná skutečnost, že token autorizuje klienta) a je přenášen přes HTTPS. To vám umožní přistupovat k API přes jednoduché skripty(například pomocí cURL).
  • Zjednodušený podpis.
Signatura byla výrazně zjednodušena, aby se eliminovala potřeba speciální analýzy, kódování a třídění parametrů.

Stojí za zmínku, že ačkoli standard OAuth 2.0 ještě nebyl schválen, některé služby jej již používají. Například Graf Sociální API Facebook podporuje pouze OAuth 2.0.

Rozdíl mezi OAuth a OpenID

Existuje mylná představa, že OAuth je rozšířením protokolu OpenID. Ve skutečnosti to není pravda. Ačkoli OpenID a OAuth mají mnoho podobností, OAuth je samostatný protokol, který nijak nesouvisí s OpenID.

Časové razítko a Nonce

Aby se zabránilo hrozbě žádostí opětovné použití OAuth používá nonce a časové razítko. Výraz "nonce" znamená, že daný čas použitý jednou a je to jedinečný náhodný řetězec písmen a čísel, který má jednoznačně identifikovat každý podepsaný požadavek. Mít jedinečný identifikátor U každého požadavku bude poskytovatel služby moci zabránit žádostem o opětovné použití. To znamená, že klient generuje jedinečný řetězec pro každý požadavek, který odešle na server, a server sleduje všechny použité nonce, aby zabránil jejich druhému použití.

Použití nonce může být pro server velmi nákladné, protože vyžaduje trvalé uložení všech přijatých nonců. Pro snazší implementaci přidává OAuth ke každému požadavku časové razítko, což serveru umožňuje uložit nonce pouze po omezenou dobu. Když požadavek dorazí s časovým razítkem, které je dřívější než uložený čas, je odmítnut, protože server již od tohoto času nemá žádnou hodnotu.

Pověření a tokeny

OAuth používá tři typy oprávnění: přihlašovací údaje klienta (spotřebitel klíč a tajné nebo klientské přihlašovací údaje), dočasné přihlašovací údaje (token požadavku a tajné nebo dočasné přihlašovací údaje) a tokeny (přístupový token a tajné nebo tokenové přihlašovací údaje).

Přihlašovací údaje klienta se používají k ověření klienta. To umožňuje serveru shromažďovat informace o klientech. Pomocí svých služeb server nabízí některým klientům speciální zpracování, jako je throttling volný přístup nebo poskytnout vlastníkovi zdroje další podrobné informace o klientech, kteří se snaží získat přístup k jejich chráněným zdrojům. V některých případech nemusí být přihlašovací údaje klienta bezpečné a lze je použít pouze pro informační účely, například v desktopových aplikacích.

Token se používá místo jména a hesla vlastníka zdroje. Vlastník zdroje nesdílí své přihlašovací údaje s klientem, ale spíše autorizuje server, aby vydal klientovi token – speciální třídu přihlašovacích údajů, která představuje udělení přístupu. Klient používá token pro přístup k chráněnému zdroji, aniž by znal heslo vlastníka zdroje.

Token se skládá z identifikátoru, obvykle (ale ne vždy) náhodného souboru písmen a čísel, který je jedinečný a těžko uhodnutelný, a klíče k ochraně tokenu před použitím neoprávněnými osobami. Token má omezený rozsah a trvání a může být kdykoli odvolán vlastníkem zdroje, aniž by to ovlivnilo ostatní tokeny vydané jiným klientům.

Proces Autorizace OAuth také používá sadu dočasných pověření, která se používají k určení požadavku na autorizaci. Aby bylo možné vyhovět různým typům klientů (web, počítač, mobilní zařízení atd.), nabízejí dočasné přihlašovací údaje větší flexibilitu a zabezpečení.

Jak funguje OAuth

Jak funguje protokol OAuth

Vysvětleme si fungování protokolu OAuth na příkladu. Řekněme, že uživatel (vlastník zdroje) chce vytisknout své fotografie (zdroje) nahrané na server „photos.example.net“ (server) pomocí tiskové služby „printer.example.net“ (klient).

  1. Klient pomocí protokolu HTTPS odešle na server požadavek, který obsahuje identifikátor klienta, časové razítko, adresu zpětného volání, na kterou má být token vrácen, typ použitého digitálního podpisu a samotný podpis.
  2. Server potvrdí požadavek a odpoví klientovi přístupovým tokenem a částí sdíleného tajemství.
  3. Klient přenese token vlastníkovi zdroje (uživateli) a přesměruje jej na server k autorizaci.
  4. Server poté, co od uživatele obdržel token, požádá jej o jeho přihlašovací jméno a heslo, a pokud je autentizace úspěšná, požádá uživatele o potvrzení přístupu klienta ke zdrojům (autorizaci), načež je uživatel serverem přesměrován na klienta.
  5. Klient předá serveru prostřednictvím TLS token a požádá o přístup ke zdrojům.
  6. Server požadavek potvrdí a odpoví klientovi novým přístupovým tokenem.
  7. Pomocí nového tokenu klient kontaktuje server pro prostředky.
  8. Server potvrdí požadavek a poskytne zdroje.

Tento příklad popisuje tok s autorizačním kódem (tok autorizačního kódu). Kromě toho standard OAuth 2.0 popisuje následující toky:

  • Implicitní tok grantů
Rozdíl oproti toku ověřovacího kódu spočívá v tom, že klient není autentizován serverem a přístupový token je vydán serverem po požadavku na autorizaci.
  • Obnovení toku přístupových tokenů s vypršenou platností
Rozdíly tohoto proudu z uvedeného příkladu takto: v kroku 2 server kromě přístupového tokenu, který má omezený časživot, vydá obnovovací token; v kroku 8 server zkontroluje, zda je přístupový token platný (ve smyslu vypršení životnosti), a v závislosti na tom buď udělí přístup ke zdrojům, nebo požaduje aktualizaci přístupového tokenu (což je poskytnuto po předložení obnovovací token).
  • Tok pověření hesla vlastníka zdroje
V tomto toku vlastník zdroje poskytne klientovi přihlašovací jméno a heslo, předá je serveru a obdrží token pro přístup ke zdrojům. Navzdory skutečnosti, že tento způsob provozu je poněkud v rozporu s koncepcí vytváření protokolu, je popsán ve specifikaci.
  • Tok přihlašovacích údajů klienta
V tento režim jak protokol funguje, server poskytuje přístupový token poté, co klient předá svého uživatele a heslo, které bylo dříve nastaveno autorizačním serverem (specifikace neuvádí, jak přesně). Klient ve skutečnosti okamžitě prochází jak autorizací, tak autentizací.

OAuth podporuje dvě metody ověřování zpráv od klienta: HMAC -SHA1 a RSA -SHA1 . Je možné posílat zprávy bez podpisu, pak je v poli typu podpisu uvedeno „prostý text“. V tomto případě však podle specifikace musí být spojení mezi klientem a serverem navázáno přes SSL nebo TLS.

Portály využívající OAuth

Diskuse

V červenci 2012 Eran Hammer, současný editor standardu OAuth 2.0, oznámil svou rezignaci po třech letech práce na novém standardu a požádal o odstranění jeho jména ze specifikací. O svých názorech hovořil na svém webu. Později přednesl prezentaci. .

Poznámky

Viz také

Odkazy


Nadace Wikimedia.


  1. 2010.
  2. Otevření vestavěného prohlížeče s přihlašovací stránkou
  3. Uživatel je požádán o potvrzení udělení práv. Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána
  4. přístupový token Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána Aplikace zachytí přesměrování a přijme
z adresy stránky Tato možnost vyžaduje zvednutí okna prohlížeče v aplikaci, ale nevyžaduje serverovou část a server-to-server pro výměnu autorizační kód na Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána.
Příklad
Otevřete prohlížeč s přihlašovací stránkou:
> GET /oauth/authorize?response_type=token&client_id=464119 HTTP/1.1 > Hostitel: connect.mail.ru

Poté, co uživatel udělí oprávnění, dojde k přesměrování na standardní stub stránku, pro Mail.Ru to je 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

Aplikace musí zachytit poslední přesměrování a získat z adresy přístupový_token a používat jej pro přístup k chráněným zdrojům.

Autorizace pomocí přihlašovacího jména a hesla

Autorizace pomocí přihlašovacího jména a hesla je jednoduchý POST požadavek, v důsledku čehož se vrací Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána. Toto schéma není nic nového, ale je zahrnuto do standardu pro obecnost a doporučuje se používat pouze v případě, že nejsou k dispozici jiné možnosti autorizace.
Příklad
> POST /oauth/token HTTP/1.1 > Hostitel: connect.mail.ru > Typ obsahu: application/x-www-form-urlencoded > > grant_type=password&client_id=31337&client_secret=deadbeef&username=api@corp.mail.ru& password= qwerty< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"SlAV32hkKG", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"8xLOxBtZp8", < }
Popis ve specifikaci

Obnovení předchozí autorizace

Obvykle, Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána má omezenou trvanlivost. To může být užitečné například při přenosu otevřené kanály. Aby nedošlo k nucení uživatele k přihlášení po vypršení platnosti Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána"a ve všech výše uvedených možnostech navíc k Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána"možná se zase vrať obnovovací token. Můžete jej použít k získání Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána pomocí HTTP požadavku, podobně jako při autorizaci pomocí přihlašovacího jména a hesla.
Příklad
> POST /oauth/token HTTP/1.1 > Hostitel: connect.mail.ru > Typ obsahu: 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", < }
  1. 2010.
  2. Otevření vestavěného prohlížeče s přihlašovací stránkou
  3. Uživatel je požádán o potvrzení udělení práv. Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána
  4. přístupový token Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána Aplikace zachytí přesměrování a přijme
Tato možnost vyžaduje zvednutí okna prohlížeče v aplikaci, ale nevyžaduje serverovou část a další volání server-to-server pro výměnu autorizační kód na Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána.
Příklad
Otevřete prohlížeč s přihlašovací stránkou:
> GET /oauth/authorize?response_type=token&client_id=464119 HTTP/1.1 > Hostitel: connect.mail.ru

Poté, co uživatel udělí oprávnění, dojde k přesměrování na standardní stub stránku, pro Mail.Ru to je 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

Aplikace musí zachytit poslední přesměrování a získat z adresy přístupový_token a používat jej pro přístup k chráněným zdrojům.

Autorizace pomocí přihlašovacího jména a hesla

Autorizace pomocí přihlašovacího jména a hesla je jednoduchý POST požadavek, v důsledku čehož se vrací Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána. Toto schéma není nic nového, ale je zahrnuto do standardu pro obecnost a doporučuje se používat pouze v případě, že nejsou k dispozici jiné možnosti autorizace.
Příklad
> POST /oauth/token HTTP/1.1 > Hostitel: connect.mail.ru > Typ obsahu: application/x-www-form-urlencoded > > grant_type=password&client_id=31337&client_secret=deadbeef&username=api@corp.mail.ru& password= qwerty< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"SlAV32hkKG", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"8xLOxBtZp8", < }
Popis ve specifikaci

Obnovení předchozí autorizace

Obvykle, Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána má omezenou trvanlivost. To může být užitečné například v případě, že je přenášen přes otevřené kanály. Aby nedošlo k nucení uživatele k přihlášení po vypršení platnosti Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána"a ve všech výše uvedených možnostech navíc k Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána"možná se zase vrať obnovovací token. Můžete jej použít k získání Pokud uživatel souhlasí, prohlížeč je přesměrován na stub stránku ve fragmentu (za #), jejíž URL je přidána pomocí HTTP požadavku, podobně jako při autorizaci pomocí přihlašovacího jména a hesla.
Příklad
> POST /oauth/token HTTP/1.1 > Hostitel: connect.mail.ru > Typ obsahu: 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", < }


Nahoru