Korzystanie z SAML za pomocą interfejsu API do zarządzania Edge

Edge for Private Cloud wer. 4.17.09

Uwierzytelnianie podstawowe to jeden ze sposobów uwierzytelniania podczas wywoływania interfejsu Edge Management API. Możesz na przykład wysłać do interfejsu Edge Management API to żądanie cURL, aby uzyskać dostęp do informacji o Twojej organizacji:

curl -u userName:pWord https://ms_IP_DNS:8080/v1/organizations/orgName

W tym przykładzie do przekazywania podstawowych danych logowania uwierzytelniania użyto opcji cURL -u. Możesz też przekazać token OAuth2 w nagłówku Bearer, aby wykonywać wywołania interfejsu Edge Management API. Na przykład:

curl -H "Authorization: Bearer <access_token>" https://ms_IP_DNS:8080/v1/organizations/orgName

Po włączeniu SAML możesz opcjonalnie wyłączyć uwierzytelnianie podstawowe. Jeśli wyłączysz uwierzytelnianie podstawowe, wszystkie skrypty (skrypty Maven, skrypty powłoki, apigeetool itp.) korzystające z wywołań interfejsu API zarządzania urządzeniami brzegowymi obsługującego uwierzytelnianie podstawowe przestaną działać. Musisz zaktualizować wszystkie wywołania i skrypty interfejsu API korzystające z uwierzytelniania podstawowego, aby przekazywać tokeny dostępu OAuth2 w nagłówku okaziciela.

Uzyskiwanie i odświeżanie tokenów za pomocą polecenia get_token

Narzędzie get_token wymienia Twoje dane uwierzytelniające podstawowe i kod dostępu na token dostępu OAuth2 i odświeżania. Narzędzie get_token akceptuje Twoje dane logowania i wyświetla prawidłowy token dostępu. Jeśli token będzie można odświeżyć, zostanie on odświeżony i wydrukowany. Jeśli token odświeżania wygaśnie, pojawi się prośba o podanie danych logowania użytkownika.

Narzędzie get_token przechowuje tokeny na dysku, gotowe do użycia w razie potrzeby. Drukuje też prawidłowy token dostępu na karcie stdout. Następnie możesz użyć Postmana lub umieścić go w zmiennej środowiskowej, aby używać go w curl.

Poniższa procedura opisuje, jak przy użyciu get_token uzyskać token dostępu OAuth2 do wykonywania wywołań interfejsu Edge Management API:

  1. Pobierz pakiet sso-cli:
    curl http://edge_sso_IP_DNS:9099/resources/scripts/sso-cli/ssocli-bundle.zip -o "ssocli-bundle.zip"

    gdzie edge_sso_IP_DNS to adres IP nazwy DNS komputera hostującego moduł logowania jednokrotnego na serwerach brzegowych. Jeśli w systemie logowania Edge skonfigurowano protokół TLS, użyj https i prawidłowego numeru portu TLS.

  2. Rozpakuj pakiet ssocli-bundle.zip:
    unzip ssocli-bundle.zip
  3. Zainstaluj get_token w: /usr/local/bin:
    ./install

    Użyj opcji -b, aby określić inną lokalizację:

    ./install -b path
  4. Ustaw zmienną środowiskową SSO_LOGIN_URL na adres URL logowania w postaci:
    export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"

    gdzie edge_sso_IP_DNS to adres IP nazwy DNS komputera hostującego moduł logowania jednokrotnego na serwerach brzegowych. Jeśli w systemie logowania Edge skonfigurowano protokół TLS, użyj https i prawidłowego numeru portu TLS.

  5. W przeglądarce otwórz ten adres URL, aby uzyskać jednorazowy kod dostępu:
    http://edge_sso_IP_DNS:9099/passcode

    Jeśli w systemie logowania Edge skonfigurowano protokół TLS, użyj wartości https i prawidłowego numeru portu TLS.

    Ten adres URL zwraca jednorazowy kod dostępu, który pozostaje ważny, dopóki go nie odświeżysz, aby uzyskać nowy kod dostępu, lub nie wygenerujesz tokena dostępu za pomocą kodu get_token.

  6. Wywołaj get_token, aby uzyskać token dostępu OAuth2:
    get_token -u emailAddress

    gdzie emailAddress to adres e-mail użytkownika Edge. Pojawi się prośba o wpisanie jednorazowego hasła uzyskanego w kroku 3:

    One Time Code ( Get one at https://edge_sso_IP.com/passcode )
          Enter the passcode if SAML is enabled or press ENTER:

    Wpisz kod dostępu. Narzędzie get_token uzyskuje token dostępu OAuth2, wyświetla go na ekranie i zapisuje go oraz token odświeżania w usłudze ~/.sso-cli.

    Aby wpisać kod dostępu w wierszu poleceń, użyj polecenia get_token w tym formularzu:

    get_token -u emailAddress -p passcode

  7. Przekaż token dostępu do wywołania interfejsu Edge Management API jako nagłówek okaziciela:
    curl -H "Authorization: Bearer access_token"
    https://ms_IP:8080/v1/organizations/orgName

    Gdy po raz pierwszy uzyskasz nowy token dostępu, możesz go uzyskać i przekazać do wywołania interfejsu API w jednym poleceniu, jak pokazano poniżej:

    header=`get_token` &&
    curl -H "Authorization: Bearer $header"
    https://ms_IP:8080/v1/o/orgName

    W przypadku tej formy polecenia, jeśli token dostępu wygasł, będzie automatycznie odświeżany, dopóki token odświeżania nie wygaśnie.

Po wygaśnięciu tokena odświeżania get_token prosi o nowy kod dostępu. Aby wygenerować nowy token dostępu OAuth, musisz otworzyć adres URL podany powyżej w kroku 3 i wygenerować nowy kod dostępu.

Uzyskiwanie i odświeżanie tokenów za pomocą interfejsu API zarządzania

Korzystanie z zabezpieczeń OAuth2 w Apigee Edge Management API zawiera instrukcje, które pokazują, jak używać interfejsu Edge Management API do uzyskiwania i odświeżania tokenów. Możesz też używać wywołań interfejsu Edge API w przypadku tokenów wygenerowanych na podstawie potwierdzeń SAML.

Jedyną różnicą między wywołaniami interfejsu API udokumentowanymi w artykule Korzystanie z zabezpieczeń OAuth2 w interfejsie Apigee Edge Management API jest to, że URL wywołania musi się odnosić do nazwy strefy. Dodatkowo, aby wygenerować początkowy token dostępu, musisz podać kod dostępu, tak jak w kroku 3 powyżej.

Aby na przykład wygenerować wstępne tokeny dostępu i odświeżania, użyj tego wywołania interfejsu API:

curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" /
  -H "accept: application/json;charset=utf-8" /
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST /
  https://edge_sso_IP_DNS:9099/oauth/token -s /
  -d 'grant_type=password&response_type=token&passcode=passcode'

W celu autoryzacji przekaż zarezerwowane dane uwierzytelniające klienta OAuth2 w nagłówku Authorization. Wywołanie wyświetla na ekranie token dostępu i tokeny odświeżania.

Aby później odświeżyć token dostępu, użyj tego wywołania zawierającego token odświeżania:

curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" /
  -H "Accept: application/json;charset=utf-8" /
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST /
  https://edge_sso_IP_DNS:9099/oauth/token /
  -d 'grant_type=refresh_token&refresh_token=refreshToken'