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

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

curl -u USER_NAME:PASSWORD https://MS_IP_DNS:8080/v1/organizations/ORG_NAME

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

curl -H "Authorization: Bearer ACCESS_TOKEN" https://MS_IP_DNS:8080/v1/organizations/ORG_NAME

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

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

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

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

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

  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 SSO, используйте 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 SSO. Если вы настроили TLS в Apigee SSO, используйте https и правильный номер порта TLS.

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

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

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

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

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

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

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

    get_token -u EMAIL_ADDRESS -p PASSCODE

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

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

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

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

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

Как использовать защиту OAuth2 с API управления Apigee Edge – в этой статье рассказывается, как использовать API управления Edge для получения и обновления токенов. Вы также можете использовать вызовы 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 \
  http://EDGE_SSO_IP_DNS:9099/oauth/token -s \
  -d 'grant_type=password&username=USER_EMAIL&password=USER_PASSWORD'

(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=REFRESH_TOKEN'