Tillgång till privata datamängder iERDDAP™
Många mångaERDDAP™installationer har inte autentisering aktiverat och ger därför inte något sätt för användare att logga in, inte heller har de några privata datamängder.
VissaERDDAP™installationer har autentisering aktiverad. För närvarande,ERDDAP™endast stöder autentisering via Google-hanterade e-postkonton, som inkluderar e-postkonton påNOAAoch många universitet. Om enERDDAP™har autentisering aktiverat, vem som helst med ett Google-hanterat e-postkonto kan logga in, men de kommer bara att ha tillgång till de privata datamängden somERDDAP™administratören har uttryckligen godkänt dem att komma åt.
Uppdaterade instruktioner
En del av informationen nedan är ur datum. Tills detta uppdateras kan du användaDetta blogginläggför senaste steg på att få data från en privat dataset med skript.
Människor med webbläsare
Mänskliga användare avERDDAP™kan logga inERDDAP™i en webbläsare för att få tillgång till privata datamängder som de är behöriga att komma åt.
För att logga in:
- Klicka på loggen i länken i den övre vänstern av någonERDDAP™webbsida. Om det inte finns någon logga in länk,ERDDAP™installationen har inte autentisering aktiverad och det finns inga privata datamängder.
- Klicka på knappen Logga in för att logga in på ditt Google-konto. Texten på knappen ska ändras till "Signed in".
- Klicka på Logga inERDDAPknappen. Webbsidan bör ändras för att säga Du är inloggad som Dina dina Emailadress . Om det inte gör det, vänta 5 sekunder och klicka på Logga inERDDAPknappen igen. I extrema fall kan du behöva vänta och sedan försöka igen några gånger.
- Använd inte webbläsarens Back-knapp. Använd "ERDDAPlänk högst upp på ovanstående, sedan använda andra länkar för att gå tillERDDAP™sidor du är intresserad av. Om en cachad webbsida säger att du inte är inloggad, ladda om sidan.
Skrifter
\[Detta ändras något från information som tillhandahålls av Lynn DeWitt, som gjorde det svåra jobbet att räkna ut detta. Lynn, tack så mycket! Om du har korrigeringar eller förslag, vänligen e-post erd.data @ noaa.gov.\]
Det är också möjligt att logga in påERDDAP™och tillgång till privata dataset via ett skript. Här är ett exempel som användercurlFrån:
- Dessa instruktioner antar att du använder en gmail-adress där 2-faktorsautentisering inte aktiveras. Om din huvudsakliga gmail-adress har 2-faktorsautentisering aktiveras, överväga att skapa en annan gmailadress med 2-faktorsautentisering avstängd.
- Logga in tillERDDAP™manuellt med den gmail-adress du vill använda i ditt skript och acceptera eventuella behörigheter som krävs, logga sedan helt ut.
- Öppna webbläsaren Developer Tools och gå till fliken Nätverk.
- Klicka påERDDAP™"logga in" -länken, sedan "Sign in" -knappen och välj lämplig e-postadress om du uppmanas.
- Efter att knappen "Sign in" ändras till "Signed in", visar fliken Utvecklarverktyg Network två poster som ser ut som följande (Exempel från Firefox) Från:
iframerpc?action=issueToken&response loginGoogle.html
Använd musen högerklicka på kontextmenyn för att "kopiera som cURL" båda dessa url och klistra in dem i en vanlig textredigerare 6. Klicka på "Logga inERDDAP"Knapp och "kopia som cURL" länken som ser ut:
login.html
och klistra in denna tredjecurlkomma in i textfilen. 7. I textfilen har du nu 3 rader som följande, där du har loggat in i enERDDAP™Server på ' * https://host.somewhere.com/erddap * ". Den förstacurlkommandot får din användarprofil i "login\_hint" och genererar en "id\_token". Den andra använder id\_token för att logga in på Google, och den tredje loggar sedan in för attERDDAP.
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'
- Ovanstående 3 rader, när du körs sekventiellt från en kommandorad, loggar du in dig iERDDAP. För att kunna använda dessa i ett manus måste du fånga id\_token från den första raden, mata den till den andra raden och skriva en cookie som ska läsas av efterföljande rader.
- För att utveckla ett manus, kör den första (" https://accounts.google.com ) curllinje exakt som den kopierades från utvecklarverktygen och fånga svaret (Du kan få encurlfel om flaggan "-2.0" bara ta bort den) . I php ser det ut som följande:
$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"\\];
Logga in på Google genom att utföra den andra raden med $id\_token, först ta bort "-H" Cookie: saker "" parameter och istället berättacurlFör att skriva 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);
Logga in tillERDDAP™Återigen ta bort parametern "-H" Cookie: stuff "" och använda den tidigare skriftliga cookien:
$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 nu kunna begära data från servern med samma cookie:
$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!