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

Edge для частного облака v4.18.05

Базовая аутентификация — это один из способов аутентификации при вызовах 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'