Tärkeää: Jos työskentelet Google Cloud Platformin kanssa, käytä palvelutilejä ja Cloud Client Librarya sen sijaan, että suoritat valtuutuksen nimenomaisesti tässä asiakirjassa kuvatulla tavalla, ellet aio rakentaa omaa asiakaskirjastoasi. Lisätietoja on Google Cloud Platform -dokumentaation kohdassa Todennuksen yleiskatsaus. Joissakin Google-sovellusliittymissä voit tehdä valtuutettuja API-kutsuja käyttämällä allekirjoitettua JWT:tä OAuth 2.0:n sijaan, mikä voi säästää verkkopyynnön. Katso
Google OAuth 2.0 -järjestelmä tukee palvelinten välistä vuorovaikutusta, kuten verkkosovelluksen ja Google-palvelun välistä vuorovaikutusta. Tätä skenaariota varten tarvitset palvelutilin, joka on tili, joka kuuluu sovelluksellesi yksittäisen loppukäyttäjän sijaan. Sovelluksesi kutsuu Google-sovellusliittymiä palvelutilin puolesta, joten käyttäjät eivät ole suoraan mukana. Tätä skenaariota kutsutaan joskus "kaksijalkaiseksi OAuthiksi" tai "2LO:ksi". (Aiheeseen liittyvä termi "kolmijalkainen OAuth" viittaa skenaarioihin, joissa sovelluksesi kutsuu Google-sovellusliittymiä loppukäyttäjien puolesta ja joissa käyttäjän suostumus vaaditaan joskus.)
Yleensä sovellus käyttää palvelutiliä, kun sovellus käyttää Google-sovellusliittymiä omien tietojensa käsittelyyn käyttäjän tietojen sijaan. Esimerkiksi sovellus, joka käyttää Google Cloud Datastorea tietojen säilymiseen, käyttäisi palvelutiliä todentamaan puhelunsa Google Cloud Datastore API:lle.
Google Workspace -verkkotunnuksen järjestelmänvalvojat voivat myös myöntää palvelutileille verkkotunnuksen laajuiset oikeudet käyttää käyttäjätietoja verkkotunnuksen käyttäjien puolesta.
Tässä asiakirjassa kuvataan, kuinka sovellus voi suorittaa palvelinten välisen OAuth 2.0 -virran käyttämällä joko Google-sovellusliittymien asiakaskirjastoa (suositus) tai HTTP:tä.
Lisäys: Palvelutilin valtuutus ilman OAuthia.Palvelinten välisen vuorovaikutuksen tukemiseksi luo ensin palvelutili projektillesi API-konsolissa. Jos haluat käyttää Google Workspace -tilisi käyttäjien käyttäjätietoja, delegoi verkkotunnuksen laajuinen käyttöoikeus palvelutilille.
Sovelluksesi valmistautuu sitten tekemään valtuutettuja API-kutsuja käyttämällä palvelutilin kirjautumistietoja ja pyytämään käyttöoikeustunnusta OAuth 2.0 -todennuspalvelimelta.
Lopuksi sovelluksesi voi kutsua Google-sovellusliittymiä käyttöoikeustunnuksen avulla.
Suositus: Sovelluksesi voi suorittaa nämä tehtävät joko käyttämällä Google-sovellusliittymien asiakaskirjastoa kielelläsi tai olemalla suoraan vuorovaikutuksessa OAuth 2.0 -järjestelmän kanssa HTTP:n avulla. Palvelinten välisten todennusvuorovaikutusten mekaniikka kuitenkin edellyttää, että sovellukset luovat ja kryptografisesti allekirjoittavat JSON Web Tokeneja (JWT), ja on helppo tehdä vakavia virheitä, joilla voi olla vakava vaikutus sovelluksesi turvallisuuteen.
Tästä syystä suosittelemme käyttämään kirjastoja, kuten Google-sovellusliittymien asiakaskirjastoja, jotka poistavat salauksen sovelluskoodista.
Palvelutilin kirjautumistiedot sisältävät luodun sähköpostiosoitteen, joka on yksilöllinen, ja vähintään yhden julkisen/yksityisen avainparin. Jos toimialueen laajuinen delegointi on käytössä, asiakastunnus on myös osa palvelutilin tunnistetietoja.
Jos sovelluksesi toimii Google App Enginessä, palvelutili määritetään automaattisesti, kun luot projektin.
Jos sovelluksesi toimii Google Compute Enginessä, palvelutili määritetään myös automaattisesti, kun luot projektia, mutta sinun on määritettävä laajuudet, joihin sovelluksesi tarvitsee pääsyn, kun luot Google Compute Engine -esiintymän. Lisätietoja on kohdassa Ilmentymän valmisteleminen palvelutilien käyttöä varten.
Jos sovelluksesi ei toimi Google App Enginessä tai Google Compute Enginessä, sinun on hankittava nämä kirjautumistiedot Google-sovellusliittymäkonsolista. Voit luoda palvelutilin kirjautumistiedot tai tarkastella jo luomiasi julkisia tunnistetietoja seuraavasti:
Avaa Palvelutilit-sivu. Valitse pyydettäessä projekti tai luo uusi. Napsauta lisää Luo palvelutili. Kirjoita Palvelutilin tiedot -kohtaan palvelutilin nimi, tunnus ja kuvaus ja napsauta sitten Luo. Valinnainen: Palvelussa tilin käyttöoikeudet, valitse palvelutilille myönnettävät IAM-roolit ja napsauta sitten Jatka. Valinnainen: Lisää kohdassa Anna käyttäjille pääsy tälle palvelutilille käyttäjät tai ryhmät, joilla on oikeus käyttää ja hallita palvelutiliä. Napsauta lisää Luo avain ja sitten napsauta Luo.Uusi julkinen/yksityinen avainparisi luodaan ja ladataan koneellesi. se toimii yksityisen avaimen ainoana kopiona. Olet vastuussa sen turvallisesta säilyttämisestä. Jos kadotat tämän avainparin, sinun on luotava uusi.
Jos sinun on myönnettävä G Suite ‑verkkotunnuksen laajuiset käyttöoikeudet palvelutilille, napsauta luomasi palvelutilin sähköpostiosoitetta ja kopioi arvo Yksilöllinen tunnus -ruudusta.
Jos haluat siirtää valtuudet palvelutilille, käytä asiakastunnuksena kopioimaasi arvoa.
Voit palata API-konsoliin milloin tahansa tarkastellaksesi sähköpostiosoitetta, julkisen avaimen sormenjälkiä ja muita tietoja tai luodaksesi lisää julkisia/yksityisiä avainpareja. Lisätietoja palvelutilien tunnistetiedoista API-konsolissa on API-konsolin ohjetiedoston kohdassa Palvelutilit.
Pane merkille palvelutilin sähköpostiosoite ja tallenna palvelutilin yksityisen avaimen tiedosto paikkaan, johon sovelluksesi pääsee käsiksi. Sovelluksesi tarvitsee niitä valtuutettujen API-kutsujen tekemiseen.
Huomautus: Yksityisiä avaimia on tallennettava ja hallittava turvallisesti sekä kehitys- että tuotantoympäristöissä. Google ei säilytä kopiota yksityisistä avaimistasi, vain julkiset avaimesi. Katso lisätietoja OAuth 2.0 -käytäntöjen Käsittele asiakkaan tunnistetietoja turvallisesti -osiosta.Jos sinulla on Google Workspace -tili, verkkotunnuksen järjestelmänvalvoja organisaatio voi valtuuttaa sovelluksen käyttämään käyttäjätietoja Google Workspace -verkkotunnuksen käyttäjien puolesta. Esimerkiksi sovellus, joka käyttää Google-kalenterin sovellusliittymää tapahtumien lisäämiseen kaikkien Google Workspace -verkkotunnuksen käyttäjien kalentereihin, käyttäisi palvelutiliä päästäkseen Google-kalenterin sovellusliittymään käyttäjien puolesta. Palvelutilin valtuuttamista käyttämään tietoja verkkotunnuksen käyttäjien puolesta kutsutaan joskus "verkkotunnuksen laajuisten valtuuksien delegoimiseksi" palvelutilille.
Jos haluat siirtää toimialueen laajuiset valtuudet palvelutilille, ota ensin käyttöön toimialueen laajuinen delegointi olemassa olevalle palvelutilille Palvelutilit-sivulla tai luo uusi palvelutili, jossa koko toimialueen delegointi on käytössä.
Sitten Google Workspace -verkkotunnuksen pääjärjestelmänvalvojan on suoritettava seuraavat vaiheet:
Siirry Google Workspace -verkkotunnuksesi hallintakonsolista Päävalikkovalikkoon > Suojaus > API-ohjaimet.Valitse Domain Wide Delegation -ruudussa Hallinnoi toimialueen laajuista delegointia. Napsauta Lisää uusi. Kirjoita Client ID -kenttään palvelutilin asiakastunnus. Löydät palvelutilisi asiakastunnuksen Palvelutilit-sivulta. Syötä OAuth-alueet (pilkuilla eroteltu) -kenttään luettelo laajuuksista, joihin sovelluksellesi on annettava käyttöoikeus. Jos sovelluksesi esimerkiksi tarvitsee koko verkkotunnuksen täyden pääsyn Google Drive -sovellusliittymään ja Google-kalenterin sovellusliittymään, kirjoita:https://www.googleapis.com/auth/drive, https://www.googleapis.com/auth /calendar.Napsauta Valtuuta.Huomaa: Toisena henkilönä esiintymisen käyttöoikeuden myöntäminen asiakastunnuksen lisäämisen jälkeen kestää yleensä muutaman minuutin, mutta joissakin tapauksissa voi kestää jopa 24 tuntia, ennen kuin se leviää kaikille Google-tilisi käyttäjille.< p>Sovelluksellasi on nyt valtuudet tehdä API-kutsuja käyttäjinä verkkotunnuksessasi (toisena käyttäjinä). Kun valmistaudut tekemään valtuutettuja API-kutsuja, määrität käyttäjän, joka esiintyy.tuonti com.google.api.client.googleapis.auth.oauth2.GoogleCredential;import com.google.api.services.sqladmin.SQLAdminScopes;// . ..GoogleCredential credential = GoogleCredential.fromStream(uusi FileInputStream("MyProject-1234.json")) .createScoped(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN));GoogleCredential credential = GoogleCredential.File-Stre. ")) .createScoped(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN)).createDelegated("user@example.com"); Luo Credentials-objekti palvelutilin tunnistetiedoista ja laajuuksista, joihin sovelluksesi tarvitsee pääsyn. Esimerkki:from google.oauth2 import service_accountSCOPES = ['https://www.googleapis.com/auth/sqlservice.admin']SERVICE_ACCOUNT_FILE = '/path/to/service.json'credentials = service_account.Credentials.from_service_account_ACfile(LE_SERVICE) , soveltamisalat = SOVELTAVAT)
Jos olet kehittämässä sovellusta Google Cloud Platformissa, voit käyttää sen sijaan sovelluksen oletuskirjautumistietoja, mikä voi yksinkertaistaa prosessia.
Toimialueen laajuisten valtuuksien delegointiJos sinulla on valtuutettu toimialueen laajuinen käyttöoikeus palvelutilille ja haluat esiintyä käyttäjätilinä, käytä olemassa olevan ServiceAccountCredentials-objektin with_subject-menetelmää. Esimerkiksi:
delegated_credentials = credentials.with_subject('user@example.org')Suositus: Vaikka sovelluksesi voi suorittaa nämä tehtävät olemalla suoraan vuorovaikutuksessa OAuth 2.0 -järjestelmän kanssa HTTP:n avulla, palvelinten välisten todennusvuorovaikutusten mekaniikka edellyttää, että sovellukset luovat ja kryptografisesti allekirjoittavat JSON-verkkotunnukset (JWT), ja se on helppoa. tehdä vakavia virheitä, joilla voi olla vakava vaikutus sovelluksesi turvallisuuteen.
Tästä syystä suosittelemme käyttämään kirjastoja, kuten Google-sovellusliittymien asiakaskirjastoja, jotka poistavat salauksen sovelluskoodista.
Luo JSON-verkkotunnus (JWT, lausutaan "jot"), joka sisältää otsikon, vaatimusjoukon ja allekirjoituksen.Pyydä käyttöoikeustunnus Google OAuth 2.0 -valtuutuspalvelimelta. Käsittele valtuutuspalvelimen palauttamaa JSON-vastausta. Base64url-koodattu otsikko}.{Base64url-koodattu vaatimusjoukko}.{Base64url-koodattu allekirjoitus}{Base64url-koodattu otsikko}.{Base64url-koodattu vaatimusjoukko}{"alg":"RS256","typ":"JWT"}eyJHIBJInp6OiJhCIVslnc19 NimiKuvaus aud< p> Väitteen tarkoitetun kohteen kuvaaja. Kun teet käyttöoikeustunnuspyynnön, tämä arvo on aina https://oauth2.googleapis.com/token.{ "iss": "761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer.gserviceaccount.com", "scope": "https://www.googleapis.com/auth/devstorage.read_only", "aud": "https://oauth2. googleapis.com/token", "exp": 1328554385, "iat": 1328550785}{ "iss": "761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer..gservicescount.com",:exampleac.com": "scope": "https://www.googleapis.com/auth/prediction", "aud": "https://oauth2.googleapis.com/token", "exp": 1328554385, "iat": 1328550785} { "iss": "761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer.gserviceaccount.com", "scope": "https://www.googleapis.com/auth/prediction", "aud": "https://oauth2.googleapis. com/token", "exp": 1328554385, "iat": 1328550785}{Base64url-koodattu otsikko}.{Base64url-koodattu vaatimusjoukko}{Base64url-koodattu otsikko}.{Base64url-koodattu väitejoukko}.{Base64url-koodattu vaatimusjoukko}{"aselgd44 ":"RS256","typ":"JWT"}."iss":"761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer.gserviceaccount.com","scope":"https://www.googleapis.com/auth/prediction ","aud":"https://oauth2.googleapis.com/token","exp":1328554385,"iat":1328550785}.[allekirjoitustavuja]eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.OijJkjng3MjVCJ psbG4xcmQ0bHJiaGc3NWVmZ2lncDM2bTc4ajVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJzY29wZSI6Imh0dHBzOi8vWd3b2vGXu cHJlZGljdGlvbiIsImF1ZCI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92NC90b2tlbiIsImV4cCI6MTMyODU1NDM4NSWS_FU1F1FÜN4NWWF1FGWFg AW4cRU8Y0BYVQsNTo4n7AFsNrqOpYiICDu37vVt-tw38UKzjmUKtcRsLLjrR3gFW3dNDMx_pL9DVjgVHDdYirtrCekUHOYoa1CMR66nxep5q5cLLechru9y4cLLcQi JYgI9Ks7pTnW1gkOKs0x3YpiLpzplVHAkkHztaXiJdtpBcY1OXyo6jTQCa3Lk2Q3va1dPkh_d--GU2M5flgd8xNBPYw4vxyt0mP59XZZt0fFrebSGX 3z2t5zkEiHuWJXpzcYr5zWTRPDEHsejeBSG8EgpLDce2380ROQ https ://oauth2.googleapis.com/token NameDescription grant_typeKäytä seuraavaa merkkijonoa tarvittaessa URL-koodattuina: urn:ietf:params:oauth:grant-type:jwt-bearer
POST /token HTTP/1.1Host: oauth2.googleapis.comContent-Type: application/x-www-form-urlencodedgrant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=eyNiJCIV6R1cIvCiV J8 8vd 3d zM4MSwiaWF0IjoxMzI4NTY5NzgxfQ.ixOUGehweEVX_UKXv5BbbwVEdcz6AYS- 6uQV6fGorGKrHf3LIJnyREw9evE-gs2bmMaQI5_UbabvI4k-mQE4kBqtmSpTzxYBL1TCd7Kv5nTZoUC1CmwmWCFqT9RE6D7XSgPUh_jF1qskLa2cwcrby 'grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIGt3NjQbJbHb4 iaGc3NWVmZ2lncDM2bTc4ajVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJzY29wZSI6Imh0dHBzLOi8vd3d3Lmdvb2dsMuFJlGggggtGZwaX2dsZFJ21GG biIsImF1ZCI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi90b2tlbiIsImV4cCI6MTMyODU3MzM4MSwiaWF0IjoxMzZgVxpJWG5RWG3MzlVxp 3 mLchaZsU' https://oauth2.googleapis.com/token { "access_token ": "1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M", "scope": "https://www.googleapis.com/auth/prediction" "token_type": "Kantaja", "expires_in": 3600} Google-sovellusliittymätLuo palveluobjekti sovellusliittymälle, jota haluat kutsua Google Credential -objektin avulla. Esimerkki:SQLAdmin sqladmin = uusi SQLAdmin.Builder(httpTransport, JSON_FACTORY, credential).build();Tee pyyntöjä API-palveluun käyttämällä palveluobjektin tarjoamaa käyttöliittymää. Esimerkiksi Cloud SQL -tietokantojen esiintymien luetteloimiseksi jännittävä-esimerkki-123-projektissa:SQLAdmin.Instances.List instances = sqladmin.instances().list("exciting-example-123").execute(); Luo palveluobjekti sovellusliittymälle, jota haluat kutsua. Luot palveluobjektin kutsumalla koontifunktiota API:n nimellä ja versiolla sekä AuthorCredentials-objektilla. Esimerkiksi Cloud SQL Administration API:n version 1beta3 kutsuminen:import googleapiclient.discoverysqladmin = googleapiclient.discovery.build('sqladmin', 'v1beta3', credentials=credentials)Tee pyyntöjä API-palveluun palvelun tarjoaman käyttöliittymän avulla. esine. Esimerkiksi Cloud SQL -tietokantojen esiintymien luetteloimiseksi jännittävässä-esimerkki-123-projektissa:response = sqladmin.instances().list(project='exciting-example-123').execute() GET /drive/v2/ tiedostot HTTP/1.1Host: www.googleapis.comAuthorization: Bearer access_tokenGET https://www.googleapis.com/drive/v2/files?access_token=access_tokencurl -H "Valtuutus: Beareraccess_token" https://www.googleapis.com/ drive/v2/filescurl https://www.googleapis.com/drive/v2/files?access_token=access_token
Jos yrität käyttää verkkotunnuksen laajuista delegointia, palvelutiliä ei ole valtuutettu käyttäjän hallintakonsolissa verkkotunnus.
Varmista, että palvelutili on valtuutettu hallintakonsolin verkkotunnuksen laajuisella delegointisivulla käyttäjälle alivaatimuksessa (kentässä).
Vaikka kestää yleensä muutaman minuutin, voi kestää jopa 24 tuntia, ennen kuin valtuutus leviää kaikille Google-tilisi käyttäjille.
unauthorized_clientClient ei ole valtuutettu hakemaan käyttötunnuksia tällä menetelmällä tai asiakas ei ole valtuutettu mihinkään pyydettyihin laajuuksiin.Palvelutili valtuutettiin käyttämällä asiakkaan sähköpostiosoitetta hallintakonsolissa olevan asiakastunnuksen (numeerisen) sijaan.
Poista asiakassovellus hallintakonsolin Verkkotunnuksen laajuisella delegointisivulla ja lisää se uudelleen numerotunnuksella.
pääsy_estetty(mikä tahansa arvo)
Jos käytät verkkotunnuksen laajuista delegointia, yhtä tai useampaa pyydettyä laajuutta ei ole valtuutettu hallintakonsolissa.
Varmista, että palvelutili on valtuutettu hallintakonsolin verkkotunnuksen laajuisella delegointisivulla alivaatimuksessa (kentässä) olevalle käyttäjälle ja että se sisältää kaikki JWT:si laajuusvaatimuksessa pyytämäsi laajuudet. .
Vaikka kestää yleensä muutaman minuutin, voi kestää jopa 24 tuntia, ennen kuin valtuutus leviää kaikille Google-tilisi käyttäjille.
invalid_grantEi kelvollinen sähköpostiosoite.Käyttäjää ei ole olemassa.
Tarkista, että alivaatimuksen (kentässä) oleva sähköpostiosoite on oikea.
invalid_grantVirheellinen JWT: Tokenin on oltava lyhytaikainen (60 minuuttia) ja kohtuullisessa ajassa. Tarkista 'iat'- ja 'exp'-arvosi ja käytä kelloa vinolla ottamaan huomioon järjestelmien väliset kelloerot.
Yleensä se tarkoittaa, että paikallinen järjestelmän aika ei ole oikea. Se voi myös tapahtua, jos exp-arvo on tulevaisuudessa enemmän kuin 65 minuuttia iat-arvosta tai exp-arvo on pienempi kuin iat-arvo.
Varmista, että järjestelmän kello, jossa JWT luodaan, on oikea. Synkronoi tarvittaessa aikasi Google NTP:n kanssa.
invalid_grantInvalid JWT Signature.JWT-vahvistus on allekirjoitettu yksityisellä avaimella, jota ei ole liitetty asiakassähköpostin tunnistamaan palvelutiliin, tai käytetty avain on poistettu, poistettu käytöstä tai vanhentunut.
Vaihtoehtoisesti JWT-väite voi olla koodattu väärin - sen on oltava Base64-koodattu ilman rivinvaihtoja tai tasausmerkkejä.
Pura JWT-vaatimusjoukko ja varmista, että väitteen allekirjoittanut avain on liitetty palvelutiliin.
Yritä käyttää Googlen toimittamaa OAuth-kirjastoa varmistaaksesi, että JWT on luotu oikein.
invalid_scopeVirheellinen OAuth-laajuus tai ID-tunnusyleisö annettu.Laajuuksia ei pyydetty (tyhjä laajuuksien luettelo), tai jotakin pyydetyistä laajuuksista ei ole olemassa (eli se on virheellinen).
Varmista, että JWT:n laajuusvaatimus (kenttä) on täytetty, ja vertaa sen sisältämiä laajuuksia käytettävien sovellusliittymien dokumentoituihin laajuuksiin varmistaaksesi, ettei siinä ole virheitä tai kirjoitusvirheitä.
Huomaa, että laajuusvaatimusten laajuusluettelo on erotettava välilyönnillä, ei pilkuilla.
Disable_clientOAuth-asiakasohjelma poistettiin käytöstä.JWT-vahvistuksen allekirjoittamiseen käytetty avain on poistettu käytöstä.
Siirry Google-sovellusliittymäkonsoliin ja IAM & Järjestelmänvalvoja > Palvelutilit, ota käyttöön palvelutili, joka sisältää väitteen allekirjoittamiseen käytetyn "Avaintunnuksen".
Joissakin Google-sovellusliittymissä voit tehdä valtuutettuja API-kutsuja käyttämällä allekirjoitettua JWT:tä suoraan siirtotietunnuksena OAuth 2.0 -käyttötunnuksen sijaan. Kun tämä on mahdollista, voit välttää verkkopyynnön tekemisen Googlen valtuutuspalvelimelle ennen API-kutsua.
Jos kutsuttavan sovellusliittymän palvelumäärittely on julkaistu Google-sovellusliittymien GitHub-tietovarastossa, voit tehdä valtuutettuja API-kutsuja käyttämällä JWT:tä käyttötunnuksen sijaan. Tehdä niin:
Luo palvelutili yllä kuvatulla tavalla. Muista säilyttää tiliä luodessasi saamasi JSON-tiedosto. Luo JWT, jossa on otsikko ja hyötykuorma, käyttämällä mitä tahansa tavallista JWT-kirjastoa, kuten osoitteesta jwt.io olevaa kirjastoa, kuten seuraava esimerkki:{ "alg": "RS256 ", "typ": "JWT", "kid": "abcdef1234567890"}.{ "iss": "123456-compute@developer.gserviceaccount.com", "sub": "123456-compute@developer.gserviceaccount.com ", "aud": "https://firestore.googleapis.com/", "iat": 1511900000, "exp": 1511903600}Määritä ylätunnisteen lapsi-kenttään palvelutilisi yksityisen avaimen tunnus. Löydät tämän arvon palvelutilisi JSON-tiedoston private_key_id-kentästä. Määritä iss- ja alikentille palvelutilisi sähköpostiosoite. Löydät tämän arvon palvelutilisi JSON-tiedostosi asiakas_email-kentästä. Määritä aud-kenttään API-päätepiste. Esimerkki: https://SERVICE.googleapis.com/. Määritä iat-kenttään nykyinen Unix-aika ja exp-kenttään aika täsmälleen 3600 sekuntia myöhemmin, jolloin JWT vanhenee.Allekirjoita JWT RSA-256:lla käyttämällä palvelutilisi JSON-tiedostossa olevaa yksityistä avainta.
Esimerkki:
GoogleCredential-tunniste = GoogleCredential.fromStream(new FileInputStream("MyProject-1234.json"));PrivateKey privateKey = credential.getServiceAccountPrivateKey();String privateKeyId = credential.getServiceAccountT kokeile { Algoritmin algoritmi = Algorithm.RSA256(null, privateKey); Merkkijono SignedJwt = JWT.create() .withKeyId(privateKeyId) .with Issuer("123456-compute@developer.gserviceaccount.com") .with Subject("123456-compute@developer.gserviceaccount.com") .withAudience /firestore.googleapis.com/") .withIssuedAt(new Date(nyt)) .with ExpiresAt(new Date(nyt + 3600 * 1000L)) .sign(algoritmi);} saalis ...
PyJWT:n käyttäminen:
iat = time.time()exp = iat + 3600payload = {'iss': '123456-compute@developer.gserviceaccount.com', 'sub': '123456-compute@developer.gserviceaccount.com', 'aud': 'https://firestore.googleapis.com/', 'iat': iat, 'exp': exp}additional_headers = {'lapsi': PRIVATE_KEY_ID_FROM_JSON}signed_jwt = jwt.encode(hyötykuorma, PRIVATE_KEY_FROM_JSON, addiorith_headers=additional_headers 'RS256')Soita API:lle käyttämällä allekirjoitettua JWT:tä siirtotien tunnuksena: GET /v1/projects/abc/databases/123/indexes HTTP/1.1Authorization: BearerSIGNED_JWT Isäntä: firestore.googleapis.comPREV: Magento 2:n asentaminen lakalla ja Apachella Ubuntu 16.04:ssä