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

Базовая аутентификация — это один из способов аутентификации при вызовах 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 путь
  4. Задайте для переменной среды SSO_LOGIN_URL URL-адрес входа в форме:
    экспортировать 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/пароль

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

    Примечание . Если вы еще не вошли в систему через своего провайдера удостоверений, вам будет предложено войти в систему.

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

    где emailAddress — это адрес электронной почты пользователя Edge. Вам будет предложено ввести одноразовый код доступа, полученный на шаге 3:
    Одноразовый код (получите его по адресу https://edge_sso_IP.com/passcode).
    Введите пароль, если SAML включен, или нажмите ENTER:


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

    Вы можете ввести пароль в командной строке, используя команду get_token в форме:
    > get_token -u адрес электронной почты -p пароль
  7. Передайте токен доступа в вызов API управления Edge в качестве заголовка Bearer:
    > curl -H "Авторизация: токен доступа на предъявителя" https:// ms_IP :8080/v1/organizations/ orgName

    После того, как вы впервые получите новый токен доступа, вы можете получить токен доступа и передать его вызову API с помощью одной команды, как показано ниже:
    > header=`get_token` && curl -H "Авторизация: носитель $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 в заголовке авторизации . Вызов выводит на экран токены доступа и обновления.

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

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'