Использование SAML с API управления Edge

Edge для частного облака v. 4.17.09

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

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

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

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

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

Использование get_token для получения и обновления токенов

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

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

Следующая процедура описывает, как использовать get_token для получения токена доступа 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-имени компьютера, на котором размещен модуль Edge SSO. Если вы настроили TLS для Edge SSO, используйте https и правильный номер порта TLS.

  2. Разархивируйте пакет ssocli-bundle.zip :
    unzip ssocli-bundle.zip
  3. Установите get_token в /usr/local/bin :
    ./install

    Используйте опцию -b , чтобы указать другое местоположение:

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

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

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

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

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

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

    где emailAddress — это адрес электронной почты пользователя Edge. Вам будет предложено ввести одноразовый код доступа, полученный на шаге 3:

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

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

    Вы можете ввести пароль в командной строке, используя команду get_token в форме:

    get_token -u emailAddress -p passcode
  7. Передайте токен доступа вызову API управления Edge в качестве заголовка носителя:
    curl -H "Authorization: Bearer access_token"
    https://ms_IP:8080/v1/organizations/orgName

    После того, как вы впервые получите новый токен доступа, вы можете получить токен доступа и передать его вызову API с помощью одной команды, как показано ниже:

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

    При использовании этой формы команды, если срок действия токена доступа истек, он автоматически обновляется до тех пор, пока не истечет срок действия токена обновления.

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

Использование API управления для получения и обновления токенов

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

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

Например, используйте следующий вызов 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'

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

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

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'