OAuth: een beschrijving van het protocol in eenvoudige en begrijpelijke taal. Een alternatief voor serviceaccounts. Tokens openen en vernieuwen

Er zijn veel manieren om kwaadaardige spam op VKontakte te verspreiden. Maar het ongedierte slaapt niet, er komen steeds meer in hun hoofd interessante ideeën. En het bleek erg nuttig. Fraudeurs hebben geleerd het te gebruiken om de waarschuwingspagina over kwaadwillende sites te omzeilen.

En het begon allemaal toen op een dag het volgende bericht op mijn muur verscheen:


Uit nieuwsgierigheid volgde ik de link en kwam op een andere phishingsite terecht. Maar de link zelf leek mij vreemd, het zag er zo uit (de helft van de tekens in ASCII):
vkontakte.ru/away.php? naar=http%3A%2F%2FApi.vKontakte.Ru%2F%2Fo%2561u%2574%…

Dit is waar het plezier begint...
Laten we de tweede link in delen bekijken:

Wat betekent elke parameter:

  • client_id - ID van de applicatie waarvoor autorisatie vereist is;
  • redirect_uri - het adres waarnaar het access_token zal worden verzonden (via een omleiding);
  • weergave - type autorisatievenster (pagina, pop-up, aanraken en wap).
In werkelijkheid bevatte redirect_uri het adres van de phishing-site. Omdat er een fout was in de weergaveparameter (deze bevatte rommel “?390852”), werd het autorisatievenster niet weergegeven, maar werd het onmiddellijk doorgestuurd naar een phishing-site met de volgende parameters: error=invalid_request&error_description=Invalid+display+passed

Dit is het hele punt van het omzeilen van de zwarte lijst met kwaadaardige VKontakte-sites. Er verschijnt alleen een waarschuwing over de overgang naar api.vk.com. En door de overstap komen we direct terecht op een phishingsite die op de zwarte lijst staat. Wanneer u de link vkontakte.ru/away.php?to=vgostivk.dyndns** volgt:

Het bleek dat de applicatie die zogenaamd autorisatie nodig had, bij de gehackte gebruiker bleef hangen:

En de phishing-site zelf was behoorlijk interessant ontworpen. Het ontwerp was, zoals gewoonlijk, in contactstijl en er werd gevraagd om in te loggen. Ik logde in met een willekeurig e-mailadres en wachtwoord, en ik slikte de nep prima. Wat er daarna gebeurde was zelfs nog interessanter; nieuws van “Pavel Durov” verscheen op de hoofdpagina:

Nadat u op de knop ‘Persoonlijke teller aanmaken’ had geklikt, volgde een prachtige voortgangsbalk. Vervolgens werd u gevraagd uw nummer op te geven en een sms te sturen:

In theorie zou het na een succesvolle “activatie” moeten zijn omgeleid naar de activ.php-pagina, maar ik kon daar niet komen. Fragmenten uit JS-scripts van een phishing-site:

...
if (req.status == 200) (
// als de status 200 (OK) is - geef een antwoord aan de gebruiker
if (req.responseText == "ok" ) (
//statusElem.innerHTML = "Alles bruist!";
get_activation();
}
if (req.responseText == "niet" ) (statusElem.innerHTML = "Ongeldige activatiecode";}
//statusElem.innerHTML = "Serverantwoord: "+req.responseText;
...
functie get_activation() (
document .locatie = "activ.php" ;
}

* Deze broncode is gemarkeerd met Source Code Highlighter.


Kortom: Fraudeurs gebruiken OAuth 2.0 om waarschuwingen te omzeilen, het wachtwoord en e-mailadres van de gebruiker te achterhalen en zelfs te proberen te frauderen sms'en(hoogstwaarschijnlijk met behulp van een abonnementssysteem).
  1. De ingebouwde browser openen met de inlogpagina
  2. De gebruiker wordt gevraagd te bevestigen dat rechten zijn verleend.
  3. Als de gebruiker akkoord gaat, wordt de browser doorgestuurd naar een stubpagina in het fragment (na #) waarvan de URL is toegevoegd toegangstoken
  4. De applicatie onderschept de omleiding en ontvangt toegangstoken van het paginaadres
Deze optie vereist het openen van het browservenster in de applicatie, maar vereist geen servergedeelte en extra oproep server-naar-server voor uitwisseling autorisatiecode op toegangstoken.
Voorbeeld
Open de browser met de inlogpagina:
> GET /oauth/authorize?response_type=token&client_id=464119 HTTP/1.1 > Host: connect.mail.ru

Nadat de gebruiker toestemming heeft verleend, vindt er een omleiding plaats naar een standaard stubpagina, voor Mail.Ru is dit het geval 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

De applicatie moet de laatste omleiding onderscheppen en het adres ophalen toegang_token en gebruik het om toegang te krijgen tot beschermde bronnen.

Autorisatie via login en wachtwoord

Autorisatie via login en wachtwoord is een eenvoudig POST-verzoek, waardoor het terugkeert toegangstoken. Dit schema is niets nieuws, maar is voor algemeenheid opgenomen in de standaard en wordt alleen aanbevolen voor gebruik wanneer andere autorisatieopties niet beschikbaar zijn.
Voorbeeld
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Content-Type: application/x-www-form-urlencoded > > Grant_type=wachtwoord&client_id=31337&client_secret=deadbeef&username=api@corp.mail.ru& wachtwoord= qwerty< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"SlAV32hkKG", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"8xLOxBtZp8", < }
Beschrijving in de specificatie

Eerdere autorisatie herstellen

Gebruikelijk, toegangstoken heeft een beperkte houdbaarheid. Dit kan bijvoorbeeld handig zijn als het wordt overgedragen open kanalen. Om te voorkomen dat de gebruiker na het verlopen wordt gedwongen in te loggen toegangstoken"en, in alle bovenstaande opties, daarnaast toegangstoken‘Misschien kom je nog een keer terug vernieuwingstoken. Je kunt het gebruiken om te krijgen toegangstoken met behulp van een HTTP-verzoek, vergelijkbaar met autorisatie met behulp van een login en wachtwoord.
Voorbeeld
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Content-Type: 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", < }

Als gevolg hiervan klant applicatie Met behulp van de AdWords API heeft u zonder adres toegang tot uw AdWords-account e-mail en gebruikerswachtwoord.

OAuth2-referenties maken

Volg de onderstaande stappen om OAuth2-inloggegevens aan te maken.

Het toepassingstype definiëren

Eerst moet je bepalen toepassingstype, die u wilt maken. Er zijn twee soorten toepassingen in de AdWords API:

  • installeerbare applicatie(aanbevolen);
  • webapplicatie.

Gebruik onderstaande tabel om te bepalen gewenste soort toepassingen.

Wat te kiezen Situatie
Installeerbare applicatie(aanbevolen)
  • U beheert alle AdWords-accounts met één manageraccount hoogste niveau.
  • Ben je net begonnen of wil je snel aan de slag?
  • Uw aanvraag werkt met één set AdWords-accounts met meerdere gebruikers.
Webapplicatie
  • Wilt u zich authenticeren? verschillende gebruikers verschillende toegangsrechten tot AdWords-accountgegevens.
  • U moet meerdere sets inloggegevens aanmaken, bijvoorbeeld om accounts van derden te beheren.
  • Voor uw toepassing zijn callback-URL's vereist die niet worden ondersteund in geïnstalleerde toepassingen.
Aandacht!Ook als u een webapplicatie ontwikkelt, kunt u nog steeds kiezen welke applicatie u installeert. Het belangrijkste verschil is of er een callback moet worden uitgevoerd nadat het token is uitgegeven. Als u bijvoorbeeld één manageraccount op het hoogste niveau gebruikt om al uw AdWords-accounts te beheren, moet de applicatie die u installeert worden geregistreerd, zelfs als de clientapplicatie via internet toegankelijk is. Opmerking.worden hieronder besproken. Als u geen serviceaccountfunctionaliteit nodig heeft, raden wij u ten zeerste aan het autorisatieproces voor de installeerbare of webapplicatie te gebruiken.

Een klant-ID en geheime code aanmaken

Nadat u uw aanvraagtype heeft bepaald, klikt u op het juiste tabblad hieronder en volgt u de instructies om een ​​ID aan te maken geheime code cliënt.

Installeerbare applicatie

  1. Open
  2. Maak een project Creëren.
  3. Credentialen maken, en dan - OAuth-client-ID.
  4. Redden
  5. In de sectie Toepassingstype selecteren Andere soorten en geef de benodigde informatie door.
  6. Klik Creëren.
  7. identificatie En geheime sleutel
Webapplicatie
  1. Open
  2. Selecteer in het vervolgkeuzemenu Projecten Maak een project, geef vervolgens de projectnaam op en wijzig indien nodig de ID ervan, en klik vervolgens op de knop Creëren.
  3. Selecteer op de pagina Referenties Credentialen maken, en dan - OAuth-client-ID.
  4. Mogelijk wordt u gevraagd de productnaam op te geven. Klik in dit geval Pas het venster voor toegangsverzoeken aan, voer de gevraagde gegevens in en klik Redden om terug te keren naar het scherm Aanmeldingsgegevens.
  5. In de sectie Toepassingstype selecteren Webapplicatie. Volg de instructies om JavaScript-bronnen en/of omleidings-URI's op te geven.
  6. Klik Creëren.
  7. Kopieer op de pagina die verschijnt identificatie En geheime sleutel client - u heeft ze nodig bij het instellen van de clientbibliotheek.

Volg de onderstaande instructies om het gebruik van OAuth2-inloggegevens te configureren met de clientbibliotheek van uw taal.

Opmerking.Als u ervoor kiest om geen gebruik te maken van een van onze klantbibliotheken, moet u de processen voor of zelf implementeren.

OAuth2-speeltuin

Een alternatieve optie voor het aanmaken van OAuth2-referenties is het gebruik van OAuth2-speeltuin. Gecombineerd met de Google API Console maakt dit systeem het mogelijk om zelf OAuth2 tokens aan te maken.

Het OAuth2 Playground-systeem is ontworpen voor gebruikers die alleen toegang tot accounts nodig hebben een manageraccount of AdWords-gebruiker. Als u voor meerdere gebruikers om inloggegevens moet vragen, kunt u beter clientbibliotheken gebruiken zoals hierboven beschreven.

Instellingen

Waarschuwing.Te gebruiken OAuth2-speeltuin, je moet creëren klant-id Voor . Dit de enige een type applicatie dat werkt met OAuth2 Playground. Lees meer in het gedeelte hierboven.

Hoe u een client-ID en geheime sleutel kunt verkrijgen

  1. Open
  2. Selecteer in het vervolgkeuzemenu een bestaand project of maak een nieuw project.
  3. Selecteer op de pagina Referenties Credentialen maken, en dan - OAuth-client-ID.
  4. In de sectie Toepassingstype selecteren Webapplicatie.
  5. In de sectie toevoegen volgende regel: https://site/oauthplayground
  6. Klik Creëren.
  7. Schrijf het op identificatie En geheime sleutel klanten aangegeven op de pagina die verschijnt.

Je hebt ze nodig bij de volgende stap.

Waarschuwing.Hoe tokens te maken Van wat Google-account

U bent aangemeld bij uw browser. Dit hangt af van tot welke AdWords-accounts u toegang kunt krijgen met de OAuth2-inloggegevens die u heeft gemaakt. Het is wellicht beter om deze stappen in de incognitomodus uit te voeren of zonder in te loggen op uw Google-account. Het is waarschijnlijk dat u inloggegevens moet gebruiken die verschillen van de account waarin u zich bevond toen u de client-ID en de geheime sleutel ontving.

Hoe OAuth2 Playground van Client ID te verwijderen Aangezien je dat al hebt gedaan, hoeft u OAuth2 Playground niet langer te gebruiken als uw opgeloste omleidings-URI. Volg deze stappen om dit systeem uit de lijst te verwijderen:

  1. Ga naar.
  2. Selecteer uw project in het vervolgkeuzemenu.
  3. Selecteer op de pagina Referenties de naam van de client-ID.
  4. Verwijder https://site/oauthplayground uit het veld Toegestane omleidings-URI's. Houd er rekening mee dat u minimaal moet vertrekken een Omleidings-URI.
  5. Klik Redden.

U beschikt dus over uw OAuth-inloggegevens. U kunt nu de AdWords API doorzoeken en deze gebruiken voor de vereiste klantenbibliotheek.

OAuth2-serviceaccounts

In dit gedeelte wordt beschreven hoe u toegang krijgt tot de AdWords API met behulp van serviceaccounts.

Een serviceaccount is een account dat bij een applicatie hoort, en niet een afzonderlijk account. eindgebruiker. Serviceaccounts zorgen voor interactie tussen een webapplicatie en een Google-service. Uw toepassing roept de API aan namens het serviceaccount zonder dat gebruikers er rechtstreeks bij betrokken zijn.

De AdWords API biedt toegang tot serviceaccounts in alle G Suite-domeinen.

Het serviceaccount implementeert een OAuth2-proces, waarbij in plaats van de gebruiker te autoriseren een sleutelbestand wordt gebruikt dat alleen toegankelijk is voor uw applicatie.

Het gebruik van serviceaccounts biedt twee belangrijke voordelen:

  • Applicatietoegang autoriseren tot Google-API uitgevoerd in de instelfase. Dit vermijdt het gedoe van het vereisen van tussenkomst van de gebruiker of het cachen van tokens in andere OAuth2-stromen.
  • Indien nodig wordt de identiteit van andere gebruikers in de applicatie nagebootst als onderdeel van het OAuth2-goedkeuringsproces.
Opmerking. Als je niet gebruikt speciale functies domein, zoals nabootsing van identiteit, wordt het ten zeerste aanbevolen om in plaats van serviceaccounts een proces te gebruiken voor . Als onderdeel van de OAuth2-installatie- en webapplicatieprocessen is deelname van de gebruiker slechts één keer vereist: op het moment dat toegang tot het account wordt verleend.

Alternatief voor serviceaccounts

Serviceaccounts worden veel gebruikt om diensten aan te bieden softwaretoegang naar de API via het OAuth2-protocol zonder tussenkomst van de gebruiker.

Het instellen van dergelijke accounts voor gebruik met de AdWords API is echter niet eenvoudig. Een eenvoudiger alternatief is met een persistent vernieuwingstoken. Dankzij deze aanpak kan de applicatie op elk moment nieuwe toegangstokens aanvragen.

Als onderdeel van dit proces moet u de applicatieautorisatie configureren via de clientbibliotheek, zoals hierboven beschreven. Dit hoeft slechts één keer te worden gedaan, aangezien tokens verlopen Google-updates OAuth2 is onbeperkt.

Vereisten

  • Een G Suite-domein waarvan u de eigenaar bent, zoals mijndomein.com of mijnbedrijf.com.
  • AdWords API-ontwikkelaarstoken en bij voorkeur een testaccount.
  • voor de taal die wordt gebruikt.

Toegang instellen voor een klantaccount

Eerst moet u een serviceaccountsleutel maken in de Google API Console.

  1. Log in op uw G Suite-account en open .
  2. Selecteer in het vervolgkeuzemenu Projecten Maak een project, geef vervolgens de vereiste informatie op en klik op de knop Creëren. Nieuw project verschijnt in de actieve lijst.
  3. In het menu aan de linkerkant bovenste hoek selecteren IAM en administratie, en dan - Serviceaccounts in het menu aan de linkerkant.
  4. Klik Maak een serviceaccount aan bovenaan de pagina.
  5. Voer de naam van het serviceaccount in.
  6. Vink het vakje aan Maak nieuw privé sleutel en selecteer het JSON-sleuteltype.
  7. Vink het vakje aan Schakel delegatie van gegevenstoegang in uw G Suite-domein in en geef de productnaam op voor het venster met toegangsverzoeken.
  8. Klik Creëren. Het JSON-sleutelbestand wordt gedownload. Bewaar het bestand op een veilige plek waar alleen jij toegang toe hebt.
  9. Op de pagina Serviceaccounts er verschijnt een nieuw serviceaccount.
Opmerking. Omdat de nabootsing van gebruikers kan worden gecontroleerd alleen op domeinniveau, om serviceaccounts en het goedkeuringsproces te gebruiken Google-services OAuth2, u heeft uw eigen domein nodig dat is geregistreerd bij G Suite. Alle domeingebruikers die een serviceaccount met de juiste machtigingen gebruiken, kunnen zich voordoen als elke domeingebruiker.

Beveiligingsproblemen

Omdat G Suite op domeinniveau wordt beheerd, moet u het sleutelbestand waarmee geautoriseerde accounts toegang krijgen, veilig beveiligen Google-services. Dit is vooral belangrijk omdat we het serviceaccount de mogelijkheid bieden om zich voor te doen als elke domeingebruiker.

Daarnaast wordt aanbevolen dat elk serviceaccount toegang heeft tot slechts één Google API. Hiervoor wordt het veld gebruikt domein, die in de volgende sectie wordt beschreven. Zo een preventieve maatregel Hiermee kunt u de hoeveelheid gegevens beperken die toegankelijk zijn voor ongeautoriseerde toegang in het geval dat een sleutelbestand wordt aangetast.

Hoe u imitatiemogelijkheden kunt bieden

Volg deze stappen om imitatiemogelijkheden aan een serviceaccount toe te kennen:

U heeft nu toegang tot uw AdWords-account via uw serviceaccount als onderdeel van het OAuth2-goedkeuringsproces.

Het opzetten van de clientbibliotheek

Selecteer een taal om instructies voor het instellen van de clientbibliotheek te bekijken.

Opmerking.Als u ervoor kiest om geen gebruik te maken van een van onze clientbibliotheken, moet u het proces zelf implementeren.

OAuth2-verzoeken optimaliseren

Als uw app geen gebruik maakt van het delen van inloggegevens, kan dit het aantal verzoeken dat naar Google wordt verzonden aanzienlijk verhogen. Als gevolg hiervan kunnen onze servers beperkingen opleggen aan een dergelijke applicatie, waardoor de snelheid van de werking ervan afneemt.

In dit gedeelte wordt beschreven hoe u het beheer van OAuth2-referenties kunt optimaliseren, zodat uw applicatie effectiever samenwerkt met de AdWords API.

Aandacht!Onder de termijn referenties Dit verwijst naar de volledige set OAuth2-referentiekenmerken, inclusief het toegangstoken en de vervaldatum ervan.

Strategieën voor het distribueren van inloggegevens

Het distribueren van inloggegevens over API-verzoeken verbetert de prestaties en voorkomt ook overhead en fouten als gevolg van schendingen van beperkingen.

De strategie voor de distributie van referenties is afhankelijk van het applicatieontwerp.

In toepassingen met meerdere threads moet u voor elke threadsessie dezelfde referenties gebruiken.

In multiproces- en gedistribueerde applicaties Het is noodzakelijk om een ​​bepaalde infrastructuur te implementeren voor het doorgeven van inloggegevens tussen processen. Bovendien moet u ervoor zorgen dat threads niet blokkeren en dat er race-condities optreden.

In een applicatie die zowel multi-process/gedistribueerd als multi-threaded is, moet elk proces beide strategieën combineren.

Hieronder volgen strategieën voor het verifiëren van één AdWords-account, zoals het manageraccount op het hoogste niveau in een hiërarchie.

Vervolgens wordt beschreven hoe deze strategieën kunnen worden aangepast voor .

Multithreaded-applicaties

In toepassingen met meerdere threads moeten referenties beschikbaar zijn voor verschillende threads. Updates van inloggegevens moeten synchroon worden uitgevoerd om raceomstandigheden te voorkomen.

Dit diagram toont de threads die tijdens runtime verzoeken doorgeven aan de AdWords API. Er wordt gebruik gemaakt van een gedeelde pool van sessies (gebruikers). Houd er rekening mee dat elke sessie hetzelfde referentieobject moet gebruiken. Als reactie op elk API-verzoek ontvangt de thread de bijbehorende sessie (gebruiker). Als het toegangstoken moet worden vernieuwd, moet dit synchroon gebeuren om een ​​race condition te voorkomen. Met andere woorden: het referentieobject moet threadsafe zijn.

Clientbibliotheken maken het eenvoudig om inloggegevens tussen threads door te geven. Elke clientbibliotheek heeft een sessie- (of gebruikers-)object met referenties die overal opnieuw worden gebruikt levenscyclus. Als u inloggegevens voor meerdere sessies wilt gebruiken, moet u deze toepassen bij het maken van elke sessie. In alle clientbibliotheken is de referentie een thread-safe object dat synchroon wordt bijgewerkt wanneer het toegangstoken verloopt.

In de Java-clientbibliotheek zou u bijvoorbeeld een singleton Credential-klasse maken en deze voor alle sessies gebruiken.

Multiproces- en gedistribueerde applicaties

In toepassingen die uit meerdere processen bestaan ​​en gedistribueerde toepassingen moet de distributie van referenties voortdurend plaatsvinden. Om een ​​racesituatie te voorkomen waarbij meerdere servers tegelijkertijd de inloggegevens proberen bij te werken (wat resulteert in overmatige updateverzoeken), wordt aanbevolen om de update te forceren en de bijgewerkte inloggegevens aan alle processen en servers te verstrekken.

Een enkele taak of service kan bijvoorbeeld periodiek de inloggegevens bijwerken en deze naar een gegevensopslag sturen waar ze door verschillende servers zullen worden gebruikt.

Het diagram toont het periodiek bijwerken van inloggegevens en het vastleggen van hun eigenschappen in het gegevensarchief. Alle servers ontvangen vervolgens inloggegevens voordat ze een verzoek indienen bij de API.

Taak bijwerken

Met de updatetaak worden de referenties periodiek bijgewerkt en naar de gegevensopslag verzonden. Deze taak mag niet wachten tot de huidige inloggegevens verlopen, omdat hierdoor de applicatie enige tijd niet beschikbaar zal zijn vanwege een gebrek aan geldige inloggegevens.

Het beste alternatief is periodiek gedwongen update, waarin de inloggegevens in het gegevensarchief elke keer worden vervangen door nieuwe. De updatetaak moet worden uitgevoerd ruim voordat de huidige inloggegevens verlopen, zodat er voldoende tijd is voor het geval er een tijdelijke fout optreedt. U kunt beginnen door elke 15 minuten een update uit te voeren.

Opmerking.Als het toegangstoken van de referentie verloopt terwijl een API-verzoek wordt verwerkt, wordt het verzoek nog steeds uitgevoerd. Als u bijvoorbeeld een langlopende zoekopdracht maakt en minder dan een minuut de tijd heeft om toegang te krijgen, worden er nog steeds resultaten geretourneerd.

Gegevensopslag

De gegevensopslag wordt gebruikt om inloggegevens te verstrekken verschillende processen en servers.

Om dit te doen, kunt u een bestaand datawarehouse gebruiken of een gespecialiseerd datawarehouse maken waarmee servers inloggegevens ontvangen. Als mogelijke oplossingen u kunt cachingservers (bijvoorbeeld Memcached of Infinispan) en NoSQL-gegevensarchieven (bijvoorbeeld MongoDB) gebruiken.

Het belangrijkste doel van het datawarehouse is om een ​​betrouwbare interface te bieden aan alle servers die toegang hebben tot de API. De werking ervan moet worden geoptimaliseerd om snel gegevens te kunnen lezen: servers en processen zullen vaker inloggegevens lezen dan dat ze worden bijgewerkt.

Vergeet niet om uw inloggegevens veilig te houden.

Wanneer u inloggegevens opslaat, moet u de eigenschap expiratie_time opslaan ( huidige tijd+expires_in) en refresh_token samen met de eigenschap access_token. De eigenschap expiratie_time (vervaldatum token) wordt berekend met behulp van de volgende formule: access_token updateverzoektijd + expiratietijd (vervaldatum token).

Serverpool

Elke server in de pool verkrijgt de nieuwste referenties uit het gegevensarchief voordat het verzoek wordt verzonden. Zolang de updatetaak succesvol wordt uitgevoerd, zijn de inloggegevens geldig. Als de updatetaak of de gegevensopslag echter mislukt, moet er een terugvalmechanisme zijn.

Als de server of het proces geen inloggegevens uit het gegevensarchief kan verkrijgen, of als de inloggegevens zijn verlopen, moet de server de inloggegevens bijwerken zodat de toepassing met de API kan blijven werken totdat het probleem is opgelost.

IN processen met meerdere threads dezelfde strategie voor het distribueren van inloggegevens tussen threads moet worden gebruikt.

Authenticatie van meerdere accounts

De inloggegevens die u voor uw AdWords-manageraccount maakt, kunnen worden gebruikt voor toegang tot alle onderliggende accounts. Gebruikers met één manageraccount hoeven doorgaans alleen inloggegevens voor het manageraccount op het hoogste niveau aan te maken om de aanvraag voor alle ondergeschikte AdWords-accounts te autoriseren.

In andere gevallen heeft de applicatie toegang nodig tot AdWords-accounts die niet aan elkaar gerelateerd zijn in de manageraccounthiërarchie. In deze situatie moet u meerdere inloggegevens aanmaken en onderhouden verschillende rekeningen, bijvoorbeeld voor elk AdWords-klantaccount waartoe u toegang heeft, of voor elk manageraccount op het hoogste niveau in onafhankelijke hiërarchieën.

U kunt zich voor beide toepassingen aan deze strategieën houden met minimale wijzigingen. Bij gebruik gedeelde opslag De inloggegevens moeten worden geïndexeerd op basis van de account-ID customerId om ervoor te zorgen dat de inloggegevens aan het vereiste account zijn gekoppeld. Bovendien moet de updatetaak ze op tijd bijwerken. Nadat u een nieuw account heeft gekoppeld, moet u dit mogelijk starten.

Ten slotte hoeft u in toepassingen met meerdere threads het referentieobject alleen te distribueren over de threads die worden uitgevoerd in het account waaraan het is gekoppeld.

Hoe OAuth2 werkt

Opmerking. De AdWords API ondersteunt nog geen gelijktijdige aanmelding via een verzoek om gegevenstoegang (hybride ontwerp) of delegatie van autoriteit op domeinniveau (2LO).

Domein

Het toegangstoken kan bieden verschillende graden toegang tot gegevens. Veranderlijke parameter scope definieert de reeks bronnen en bewerkingen waartoe het token toegang biedt. Bij het aanvragen van een toegangstoken stuurt uw applicatie één of meerdere waarden naar de scope parameter.

Hieronder vindt u het huidige en oude bereik van de AdWords API.

Offlinetoegang

Een clienttoepassing die de AdWords API gebruikt, vraagt ​​doorgaans om offline toegang. Dit kan gebeuren als uw toepassing batchtaken moet uitvoeren terwijl de gebruiker zonder internetverbinding op uw site surft.

Geïnstalleerde apps gebruiken standaard offline toegang.

HTTP-verzoekheader

De HTTP-header in elk verzoek aan de AdWords API-server moet de volgende vorm bevatten:

Autorisatie: drager THE_ACCESS_TOKEN

POST ... HTTP/1.1 Host: ... Autorisatie: Drager 1/fFAGRNJru1FTz70BzhT3Zg Inhoudstype: text/xml;charset=UTF-8 Inhoudslengte: ...

Tokens openen en vernieuwen

In de meeste gevallen moet het vernieuwingstoken op een veilige plaats worden bewaard, omdat het later misschien nodig is. Raadpleeg de volgende handleidingen voor meer informatie over het aanvragen van toegang en vernieuwingstokens:

Wanneer een toegangstoken verloopt

Het toegangstoken heeft een vervaldatum die afhankelijk is van de waarde vanexpes_in . Een verlopen toegangstoken kan worden vernieuwd met een vernieuwingstoken, maar onze clientbibliotheken doen dit automatisch.

Tenzij anders vermeld, valt de inhoud van deze pagina onder de Creative Commons Attribution 3.0-licentie, en zijn codevoorbeelden gelicentieerd onder de Apache 2.0-licentie. Voor details, zie de onze. Java is een geregistreerd handelsmerk van Oracle en/of haar dochterondernemingen.

Bijgewerkt op 24 september 2018