Przejdź do głównej treści

Dostęp do prywatnych zbiorów danych w ERDDAP™

Wiele ERDDAP™ Instalacje nie mają włączonego uwierzytelniania i w związku z tym nie zapewniają użytkownikom możliwości logowania się, nie mają też żadnych prywatnych zbiorów danych.

Niektóre ERDDAP™ instalacje mają włączone uwierzytelnianie. Obecnie ERDDAP™ Tylko obsługuje uwierzytelnianie poprzez konta pocztowe zarządzane przez Google- NOAA i wiele uniwersytetów. Jeśli ERDDAP™ ma uwierzytelnianie włączone, każdy z Google- zarządzane konto e-mail może się zalogować, ale będą mieli tylko dostęp do prywatnych zbiorów danych, że ERDDAP™ Administrator wyraźnie upoważnił ich do dostępu.

Aktualizacja instrukcji

Niektóre z poniższych informacji są nieaktualne. Dopóki to nie zostanie zaktualizowane możesz użyć ten blog post dla ostatnich kroków na temat uzyskiwania danych z prywatnego zbioru danych ze skryptami.

Ludzie z przeglądarkami

U ludzi ERDDAP™ może się zalogować ERDDAP™ w przeglądarce w celu uzyskania dostępu do prywatnych zbiorów danych, do których mają dostęp.

Zaloguj się:

  1. Kliknij na link logowania w lewym górnym rogu dowolnego ERDDAP™ strona internetowa. Jeśli nie ma logowania w link, ERDDAP™ instalacja nie posiada autoryzacji i nie ma prywatnych zbiorów danych.  
  2. Kliknij przycisk Zaloguj się, aby zalogować się na konto Google. Tekst przycisku powinien zmienić się na "Podpisany".  
  3. Kliknij na dziennik ERDDAP Przycisk. Strona powinna się zmienić, aby powiedzieć Jesteś zalogowany jako do Adres emailName . Jeśli nie, odczekaj 5 sekund i kliknij na dziennik ERDDAP Przycisk ponownie. W skrajnych przypadkach, może trzeba poczekać i spróbować ponownie kilka razy.  
  4. Nie używaj przycisku Back przeglądarki. Użyj " ERDDAP "link na górze powyżej, a następnie użyć innych linków, aby przejść do ERDDAP™ strony, które Cię interesują. Jeśli strona internetowa mówi, że nie jesteś zalogowany, przeładuj stronę.  

Skrypt

\[ Jest to nieznacznie zmienione na podstawie informacji dostarczonych przez Lynn DeWitt, która wykonała ciężką pracę, aby to rozgryźć. Lynn, dziękuję bardzo! Jeśli masz poprawki lub sugestie, prosimy wysłać e-mail erd.data @ noaa.gov. \]

Można również zalogować się do ERDDAP™ i dostęp do prywatnych zbiorów danych za pomocą skryptu. Oto przykład, który wykorzystuje curl :

  1. Instrukcje te zakładają, że używasz adresu gmail, gdzie nie jest włączone uwierzytelnianie 2- czynnika. Jeśli Twój główny adres gmail ma włączone uwierzytelnianie 2- czynnik, należy rozważyć utworzenie innego adresu gmail z uwierzytelnianiem 2- czynnik wyłączony.  
  2. Zaloguj się do ERDDAP™ ręcznie z adresem gmail chcesz używać w skrypcie i zaakceptować wszelkie wymagane uprawnienia, a następnie zalogować się całkowicie z powrotem.  
  3. Otwórz narzędzia programisty przeglądarki i przejdź do zakładki Sieć.  
  4. Kliknij na ERDDAP™ "Zaloguj się" link, a następnie przycisk "Zaloguj się" i wybierz odpowiedni adres e-mail, jeśli jest wyświetlony.  
  5. Po zmianie przycisku "Zaloguj się" na "Zarejestrowany", zakładka Sieć narzędzi programisty pokaże dwa wpisy, które wyglądają następująco (przykład z Firefox) :
    iframerpc?action=issueToken&response loginGoogle.html  

Użyj menu kontekstowego kliknij prawym przyciskiem myszy, aby "skopiować jako cURL" oba te urls i wklej je do zwykłego edytora tekstu   6. Kliknij na "Zaloguj się ERDDAP "przycisk i" skopiować jako CURL "link, który wygląda jak:

    login.html  

i wklej tę trzecią curl polecenie do pliku tekstowego.   7. W pliku tekstowym, masz teraz 3 wiersze, jak poniżej, gdzie zalogowano się do ERDDAP™ serwer na ' https://host.somewhere.com/erddap '. Pierwszy curl Polecenie otrzymuje profil użytkownika w "login\ _ hint" i generuje "id\ _ token". Drugi używa id\ _ token do logowania się do Google, a trzeci następnie loguje się do 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'
  1. Powyższe 3 linie, po uruchomieniu kolejno z linii poleceń, zaloguje się do ERDDAP . Aby użyć ich w skrypcie, musisz uchwycić id\ _ token z pierwszej linii, podać go do drugiej linii i zapisać plik cookie do odczytu przez kolejne linie.  
  2. Aby opracować skrypt, uruchom pierwszy ('https://accounts.google.com) curl linii dokładnie jak został skopiowany z narzędzi deweloperskich, i uchwycić odpowiedź (można dostać curl błąd dotyczący flagi "-- 2.0" wystarczy usunąć) . W php wygląda następująco:
    $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"\\];

Zaloguj się do Google, wykonując drugą linię używając $id\ _ token, najpierw usuwając parametr "-H 'Cookie: stuff'" i zamiast tego mówiąc curl do napisania pliku 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);

Zaloguj się do ERDDAP™ , ponownie usuwając parametr "-H 'Cookie: stuff'" i używając wcześniej napisanego pliku 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);

Należy teraz być w stanie zażądać danych z serwera, używając tego samego pliku 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!