Tilgang til private datasett iERDDAP™
MangeERDDAP™installasjoner har ikke autentisering aktivert og dermed ikke gi noen måte for brukere å logge inn, og de har heller ikke private datasett.
NoenERDDAP™installasjoner har autentisering aktivert. I dag,ERDDAP™bare støtter autentisering via Google-styrte e-postkontoer, som inkluderer e-postkontoer påNOAAog mange universiteter. Hvis enERDDAP™har autentisering aktivert, alle med en Google-styrt e-postkonto kan logge på, men de vil bare ha tilgang til private datasett somERDDAP™administrator har eksplisitt autorisert dem til tilgang.
Oppdaterte instruksjoner
Noen av opplysningene nedenfor er utdatert. Inntil dette blir oppdatert kan du brukedenne bloggenfor nylige trinn for å få data fra et privat datasett med skript.
Mennesker med nettlesere
Menneskelige brukere avERDDAP™kan logge innERDDAP™i en nettleser for å få tilgang til private datasett som de er autorisert til å få tilgang til.
Logg inn:
- Klikk på loggen i linken øverst til venstre for noenERDDAP™Nettside. Hvis det ikke er logg i link,ERDDAP™installasjonen har ikke autentisering aktivert, og det er ingen private datasett.
- Klikk på Logg på knappen for å logge på Google-kontoen din. Teksten på knappen bør endres til " Signert i".
- Klikk på Logg innERDDAPknapp. Nettsiden bør endres til å si Du er logget på som din E-postadresse .. Hvis det ikke gjør det, vent 5 sekunder og klikk på Logg påERDDAPknappen igjen. I ekstreme tilfeller må du kanskje vente og prøve igjen noen ganger.
- Ikke bruk ryggknappen til nettleseren. Bruk "ERDDAP" lenke øverst i ovennevnte, og bruk deretter andre lenker til å gå tilERDDAP™sider du er interessert i. Hvis en cached webside sier at du ikke er logget på, last på siden.
Skript
\[Dette er litt endret fra informasjon gitt av Lynn DeWitt, som gjorde den harde jobben med å finne ut dette. Takk, Lynn! Hvis du har rettelser eller forslag, vennligst e-post erd.data @ noaa.gov .\]
Det er også mulig å logge påERDDAP™og tilgang til private datasett via et skript. Her er et eksempel som brukercurl:)
- Disse instruksjonene antar at du bruker en gmail-adresse der 2-faktor-autentisering ikke er slått på. Hvis din viktigste gmail-adresse har 2-faktor-autentisering slått på, bør du vurdere å opprette en annen gmail-adresse med 2-faktor-autentisering slått av.
- Logg innERDDAP™manuelt med gmail-adressen du vil bruke i skriptet og aksepterer alle tillatelser som kreves, og logg deretter helt ut igjen.
- Åpne nettleserutviklerverktøyene og gå til nettverksfanen.
- Klikk påERDDAP™Logg på" lenke, deretter " Logg på" knappen og velg riktig e-postadresse hvis du blir bedt om det.
- Etter changesLogg inn"-knappen endres til " Signert", vil Utviklerverktøynettverksfanen vise to oppføringer som ligner på følgende (eksempel fra Firefox) :)
iframerpc?action=issueToken&response loginGoogle.html
Bruk høyreklikk-menyen for å kopiere som cURL" begge disse URL-ene og lime dem inn i en vanlig tekstredigering 6. Klikk på loggenERDDAP" knapp og "kopier som cURL" lenken som ser ut som:
login.html
og lim inn denne tredjecurlkommando i tekstfilen. 7. I tekstfilen vil du nå ha 3 linjer som følger, der du har logget på enERDDAP™server på ' * https://host.somewhere.com/erddap * '. Den førstecurlkommando får din brukerprofil i " login\_hint" og genererer en "id\_token". Den andre bruker id-_token til å logge inn på Google, og den tredje logger seg deretter påERDDAP..
curl 'https://accounts.google.com/o/oauth2/iframerpc?action=issueToken&response\\_type=token%20id\\_token&scope=openid%20profile%20email&client\\_id=ABCDEFG.apps.googleusercontent.com&login\\_hint=XXXXXXXXXX&ss\\_domain=https%3A%2F%2Fhost.somewhere.com&origin=https%3A%2F%2Fhost.somewhere.com' --2.0 -H 'Host: accounts.google.com' -H 'User-Agent: useragentstuff' -H 'Accept: \\*/\\*' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Referer: https://accounts.google.com/o/oauth2/iframe' -H 'Cookie: lotsofcookiestuff' -H 'Connection: keep-alive' curl 'https://host.somewhere.com/erddap/loginGoogle.html' -H 'Host: host.somewhere.com' -H 'User-Agent: useragentstuff' -H 'Accept: \\*/\\*' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Referer: https://host.somewhere.com/erddap/login.html' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Cookie: cookiestuff' -H 'Connection: keep-alive' --data 'idtoken=HUGELONGIDTOKEN' curl 'https://host.somewhere.com/erddap/login.html' -H 'Host: host.somewhere.com' -H 'User-Agent: useragentstuff' -H 'Accept: typeacceptstuff' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Referer: https://host.somewhere.com/erddap/login.html' -H 'Cookie: cookiestuff' -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1'
- De ovennevnte tre linjene, når du kjører sekvensielt fra en kommandolinje, vil logge deg innERDDAP.. For å bruke disse i et skript må du fange id-_token fra den første linjen, mate den til den andre linjen og skrive en informasjonskapsel som skal leses av påfølgende linjer.
- For å utvikle et skript, kjører du det første (" https://accounts.google.com ) curllinje nøyaktig som den ble kopiert fra utviklerverktøyene, og fange responsen (Du kan få encurlfeil om flagget ---2.0 - bare fjern det) .. I php ser det ut som følgende:
$gcurlstuff="curl 'https://accounts.google.com/o/oauth2/iframerpc?action=issueToken&response\\_type=token%20id\\_token&scope=openid%20profile%20email&client\\_id=ABCDEFG.apps.googleusercontent.com&login\\_hint=XXXXXXXXXX&ss\\_domain=https%3A%2F%2Fhost.somewhere.com&origin=https%3A%2F%2Fhost.somewhere.com' -H 'Host: accounts.google.com' -H 'User-Agent: useragentstuff' -H 'Accept: \\*/\\*' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Referer: https://accounts.google.com/o/oauth2/iframe' -H 'Cookie: lotsofcookiestuff' -H 'Connection: keep-alive'"; //execute the curl command: exec($gcurlstuff,$output,$status); //the response is a json array in $output $response=json\\_decode($output\\[0\\],true); //the part you need is in "id\\_token": $id\\_token=$response\\["id\\_token"\\];
Logg inn på Google ved å utføre den andre linjen ved å bruke $id\_token, først fjerne "-H "cookies: ting" - parameter og i stedet fortellecurlå skrive en cookie:
$glcurlstuff="curl 'https://host.somewhere.com/erddap/loginGoogle.html' -H 'Host: host.somewhere.com' -H 'User-Agent: useragentstuff' -H 'Accept: \\*/\\*' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Referer: https://host.somewhere.com/erddap/login.html' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Cookie: cookiestuff' -H 'Connection: keep-alive' --data 'idtoken=".$id\\_token."' -b cookies.txt -c cookies.txt" exec($glcurlstuff,$output1,$status);
Logg innERDDAP™, igjen å fjerne "-H "cookies: ting" -parameteren, og bruke den tidligere skriftlige informasjonskapselen:
$ecurlstuff="curl 'https://host.somewhere.com/erddap/login.html' -H 'Host: host.somewhere.com' -H 'User-Agent: useragentstuff' -H 'Accept: typeacceptstuff' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Referer: https://host.somewhere.com/erddap/login.html' -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1 -b cookies.txt"' exec($ecurlstuff,$output2,$status);
Du bør nå kunne be om data fra serveren ved å bruke den samme informasjonskapselen:
$curlstuff="curl -s 'https://host.somewhere.com/erddap/tabledap/datasetid.csv?variablelist' -H 'Host: host.somewhere.com' -H 'User-Agent: useragentstuff' -H 'Accept: typeacceptstuff' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1' -b cookies.txt"; exec($curlstuff,$output3,$status); //$output3 will be data in csv!