Как использовать внешний поставщик идентификационной информации с Edge Management API

Базовая аутентификация – это один из способов аутентификации при вызовах Edge Management API. Например, чтобы получить информацию о своей организации, вы можете отправить в Edge Management API следующий запрос curl:

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

В этом примере для передачи учетных данных базовой аутентификации используется параметр curl -u. Вы также можете передать токен OAuth2 в заголовке Bearer, чтобы выполнить вызовы Edge Management API, как показано в следующем примере:

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

После включения внешнего поставщика идентификационной информации для аутентификации вы можете отключить базовую аутентификацию. Если вы отключите базовую аутентификацию, все скрипты (например, Maven, shell и apigeetool), которые используют вызовы Edge Management API с поддержкой базовой аутентификации, перестанут работать. Вам необходимо обновить все вызовы API и скрипты, в которых используется базовая аутентификация, чтобы передавать токены доступа OAuth2 в заголовке Bearer.

Как получить и обновить токены с помощью get_token

Утилита get_token обменивает ваши учетные данные базовой аутентификации (и в некоторых случаях код доступа) на токен доступа и токен обновления OAuth2. Утилита get_token принимает ваши учетные данные и возвращает действительный токен доступа. Если токен можно обновить, утилита обновляет и возвращает его. Если срок действия токена обновления истечет, пользователю будет предложено ввести учетные данные.

Утилита get_token сохраняет токены на диске, чтобы их можно было использовать при необходимости. Кроме того, в stdout будет выведен действительный токен доступа. Затем вы можете использовать расширение браузера, например Postman, или встроить его в переменную среды для использования в curl.

Чтобы получить токен доступа OAuth2 для вызовов Edge Management API, выполните следующие действия:

  1. Скачайте пакет sso-cli:
    curl http://edge_sso_IP_DNS:9099/resources/scripts/sso-cli/ssocli-bundle.zip -o "ssocli-bundle.zip"

    где edge_sso_IP_DNS – IP-адрес или имя DNS-сервера, на котором размещен модуль Apigee SSO. Если вы настроили TLS в системе единого входа Apigee, используйте https и правильный номер порта TLS.

  2. Распакуйте пакет ssocli-bundle.zip, как показано в примере ниже.
    unzip ssocli-bundle.zip
  3. Установите get_token в /usr/local/bin, как показано в следующем примере:
    ./install -b path

    Параметр -b позволяет указать другое местоположение.

  4. Задайте для переменной среды SSO_LOGIN_URL URL входа в следующем формате:
    export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"

    где edge_sso_IP_DNS – IP-адрес компьютера, на котором размещен модуль системы единого входа Apigee. Если вы настроили TLS в системе единого входа Apigee, используйте https и правильный номер порта TLS.

  5. (Только для SAML) В браузере перейдите по следующему URL, чтобы получить одноразовый код доступа:
    http://edge_sso_IP_DNS:9099/passcode

    Если вы настроили TLS в системе единого входа Apigee, используйте https и правильный номер порта TLS.

    Этот запрос возвращает одноразовый код доступа, который остается действительным, пока вы не обновите URL, чтобы получить новый код, или не используете код с get_token для создания токена доступа.

    Обратите внимание, что код доступа можно использовать только при аутентификации с помощью поставщика идентификационной информации SAML. Вы не можете использовать код доступа для аутентификации с помощью поставщика идентификационной информации LDAP.

  6. Вызовите get_token, чтобы получить токен доступа OAuth2, как показано в примере ниже.
    get_token -u emailAddress

    где emailAddress – адрес электронной почты пользователя Edge.

    (Только SAML) Введите в командной строке код доступа в дополнение к адресу электронной почты, как показано в примере ниже.

    get_token -u emailAddress -p passcode

    Утилита get_token получает токен доступа OAuth2, выводит его на экран и записывает его и токен обновления в файл ~/.sso-cli.

  7. Передайте токен доступа в вызов Edge Management API в качестве заголовка Bearer, как показано в следующем примере:
    curl -H "Authorization: Bearer access_token"
      https://ms_IP:8080/v1/organizations/orgName
  8. После того как вы впервые получите новый токен доступа, вы сможете получать его и передавать в вызов API одной командой, как показано в примере ниже.
    header=`get_token` && curl -H "Authorization: Bearer $header"
      https://ms_IP:8080/v1/o/orgName

    Если токен доступа устарел, он будет автоматически обновлен, пока не истечет срок действия токена обновления.

(Только для SAML) После истечения срока действия токена обновления get_token запрашивает новый код доступа. Чтобы сгенерировать новый токен доступа OAuth, перейдите по URL, указанному на шаге 3, и создайте новый код доступа.

Используйте Management API, чтобы получать и обновлять токены.

В статье Использование OAuth2 с Apigee Edge Management API рассказывается, как использовать Edge Management API для получения и обновления токенов. Вы также можете использовать вызовы Edge API, чтобы получать токены, сгенерированные из утверждений SAML.

Единственное различие между вызовами API, описанными в статье Использование безопасности OAuth2 с API управления Apigee Edge, заключается в том, что URL вызова должен ссылаться на название вашей зоны. Кроме того, для создания начального токена доступа с поставщиком идентификационной информации SAML необходимо включить код доступа, как показано на шаге 3 процедуры выше.

Для авторизации передайте зарезервированные учетные данные клиента OAuth2 в заголовке Authorization. В результате вызова на экране появятся токены доступа и обновления.

Как получить токен доступа

(LDAP) Чтобы сгенерировать начальный токен доступа и токен обновления, используйте следующий вызов 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'

(SAML) Используйте следующий вызов 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'

Обратите внимание, что для аутентификации с помощью поставщика идентификационной информации SAML требуется временный код доступа, а для поставщика идентификационной информации LDAP – нет.

Как обновить токен доступа

Чтобы обновить токен доступа, используйте следующий вызов, включающий токен обновления:

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'