Přístup k privátním datům vERDDAP™
MnohoERDDAP™instalace nemají autentizaci povolenou, a proto nemají pro uživatele žádný způsob, jak se přihlásit, ani nemají žádné soukromé soubory dat.
NěkteréERDDAP™instalace mají povolenou autentizaci. V současné době,ERDDAP™podporuje autentizaci pouze prostřednictvím e-mailových účtů spravovaných společností Google, které zahrnují e-mailové účty naNOAAa mnoho univerzit. PokudERDDAP™má autentizaci povolenou, každý, kdo má e-mailový účet vedený společností Google, se může přihlásit, ale bude mít přístup pouze k soukromým souborům údajů, kteréERDDAP™Správce jim výslovně povolil přístup.
Aktualizované pokyny
Některé z níže uvedených informací jsou zastaralé. Až do této aktualizace můžete použíttento blog postpro nedávné kroky k získání dat ze soukromého datového souboru se skripty.
Lidé s prohlížeči
UživateléERDDAP™může se přihlásitERDDAP™v prohlížeči za účelem získání přístupu k soukromým souborům dat, ke kterým mají oprávnění.
Pro přihlášení:
- Klikněte na přihlašovací odkaz v levé horní částiERDDAP™webové stránky. Pokud není žádný záznam v odkazu,ERDDAP™instalace nemá zapnutou autentizaci a neexistují žádné soukromé soubory dat.
- Kliknutím na tlačítko Přihlásit se můžete přihlásit do účtu Google. Text tlačítka by měl být přepnut na "Podepsán."
- Klikněte na záznam doERDDAPknoflík. Webová stránka by měla změnit název Jste přihlášeni jako Vaše EmailAdresa . Pokud ne, počkejte 5 sekund a klikněte na záznam doERDDAPZase knoflík. V extrémních případech možná budete muset počkat a několikrát to zkusit znovu.
- Nepoužívej zadní tlačítko prohlížeče. Použijte "ERDDAP" odkaz v horní části výše, pak použijte jiné odkazy přejít naERDDAP™stránky, které vás zajímají. Pokud cached webová stránka říká, že nejste přihlášeni, znovu načíst stránku.
Skripty
\[To je mírně upraveno z informací poskytnutých Lynn DeWittovou, která odvedla těžkou práci při řešení tohoto problému. Lynn, díky moc! Pokud máte opravy nebo návrhy, prosím email erd.data @ noaa.gov .\]
Je také možné se přihlásit doERDDAP™a přístup k soukromým souborům prostřednictvím skriptu. Zde je příklad, který používácurl:
- Tyto instrukce předpokládají, že používáte Gmail adresu, kde není zapnuta dvoufaktorová autentizace. Pokud má vaše hlavní gmailová adresa zapnutou autentizaci 2-faktor, zvažte vytvoření další gmailové adresy s vypnutou autentizací 2-faktorů.
- Přihlásit seERDDAP™ručně s gmailovou adresou, kterou chcete použít ve vašem skriptu a přijmout veškerá potřebná povolení, pak se zcela odhlásit zpět.
- Otevřete nástroj vývojáře prohlížeče a přejděte na kartu Network.
- Klikněte naERDDAP™"log in" odkaz, pak tlačítko "Přihlásit" a vyberte vhodnou e-mailovou adresu, pokud je vyzván.
- Poté, co se tlačítko "Přihlásit" změní na "Signed in," záložka Developer Tools Network zobrazí dvě položky, které vypadají jako následující (příklad z Firefoxu) :
iframerpc?action=issueToken&response loginGoogle.html
Pomocí myši pravým tlačítkem kontextové menu "kopírovat jako CURL" oba tyto URL a vložte je do textového editoru 6. Klikněte na "Připojit doERDDAP" tlačítko a "kopírovat jako CURL" odkaz, který vypadá jako:
login.html
a vložte to třetí.curlPříkaz do textového souboru. 7. V textovém souboru budete mít nyní 3 řádky, jako jsou následující, kde jste se přihlásili doERDDAP™server v ' * https://host.somewhere.com/erddap * '. Prvnícurlpříkaz získá váš uživatelský profil v "login\_hint" a vytvoří "id\_token." Druhý používá id\_token pro přihlášení do Google, a třetí pak přihlásí doERDDAP.
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'
- Výše uvedené 3 řádky, když běží postupně z příkazového řádku, se přihlásí doERDDAP. Abyste je mohli použít ve skriptu, musíte zachytit id\_token z prvního řádku, hodit je do druhého řádku a napsat cookie, které budou čteny následujícími řádky.
- Chcete-li vytvořit scénář, spusťte první (' https://accounts.google.com ) curllinka přesně tak, jak byla zkopírována z nástrojů vývojáře, a zachytit odpověď (můžete dostatcurlchyba o vlajce " - 2.0" jen odstranit) . V php to vypadá jako následující:
$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"\\];
Přihlásit se do Google provedením druhého řádku pomocí $id\_token, nejprve odstranit parametr "-H 'Cookie: stuff'" a místo toho říctcurlnapsat 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);
Přihlásit seERDDAP™, opět odstranit parametr "-H 'Cookie: stuff'" a pomocí předchozího písemného souboru cookie:
$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);
Nyní byste měli mít možnost požadovat data ze serveru pomocí stejného souboru 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!