Базовая аутентификация – это один из способов аутентификации при вызовах API управления Edge. Например, вы можете отправить следующий запрос cURL в Edge Management API, чтобы получить информацию о своей организации:
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
После включения SAML вы можете отключить базовую аутентификацию. В этом случае все скрипты (Maven, командной строки, apigeetool и т. д.), которые используют вызовы API управления Edge с поддержкой базовой аутентификации, перестанут работать. Вам необходимо обновить все вызовы API и скрипты, использующие базовую аутентификацию, чтобы передавать токены доступа OAuth2 в заголовке Bearer.
Как использовать get_token для получения и обновления токенов
Утилита get_token обменивает ваши учетные данные базовой аутентификации и код доступа на токен доступа и токен обновления OAuth2. Утилита get_token принимает ваши учетные данные и выводит действительный токен доступа. Если токен можно обновить, он будет обновлен и выведен на экран. Если срок действия токена обновления истечет, пользователю будет предложено ввести учетные данные.
Утилита get_token сохраняет токены на диске, чтобы их можно было использовать при необходимости. Он также выводит действительный токен доступа в stdout. После этого вы можете использовать Postman или встроить токен в переменную среды для использования в curl.
Ниже описано, как использовать get_token для получения токена доступа OAuth2, чтобы выполнять вызовы API управления Edge.
- Скачайте пакет 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. - Распакуйте пакет
ssocli-bundle.zip:unzip ssocli-bundle.zip
- Установите get_token в /usr/local/bin:
> ./install. Чтобы указать другое местоположение, используйте параметр -b: > ./install -b path. - Задайте для переменной среды 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. - В браузере перейдите по следующему URL, чтобы получить одноразовый код доступа:
http://edge_sso_IP_DNS:9099/passcode
Если вы настроили TLS в Edge SSO, используйте https и правильный номер порта TLS.
Примечание. Если вы не вошли в систему поставщика идентификационной информации, вам будет предложено это сделать.
Этот URL возвращает одноразовый код доступа, который остается действительным, пока вы не обновите URL, чтобы получить новый код, или не используете код с get_token, чтобы сгенерировать токен доступа. - Вызовите 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 - Передайте токен доступа вызову Edge management API в качестве заголовка Bearer:
> 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, и сгенерировать новый код доступа.
Использование Management API для получения и обновления токенов
Инструкции по получению и обновлению токенов с помощью Edge Management API приведены в статье Использование OAuth2 для защиты Apigee Edge Management API. Вы также можете использовать вызовы 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'