Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
SAML поддерживает среду единого входа (SSO). Используя SAML с Edge, вы можете обеспечить поддержку SSO для пользовательского интерфейса и API Edge, а также для любых других предоставляемых вами сервисов, которые также поддерживают SAML.
Предварительное условие: Перед использованием SAML для доступа к Edge API необходимо включить его хотя бы для одной организации.
Различия между SAML и OAuth2
После настройки SAML его использование очень похоже на использование OAuth2 для доступа к Edge API . При вызове Edge API вы включаете токен доступа OAuth2 в свой запрос.
Ключевое различие между SAML и OAuth2 при доступе к Edge API заключается в способе получения токенов. При использовании SAML для получения пары токенов необходимо указать следующее:
- Зоны: Пользователи Edge for Public Cloud должны указывать имя своей зоны при получении токенов.
- Код доступа: При запросе пары токенов доступа/обновления укажите одноразовый код доступа.
SAML использует те же конечные точки в службе Edge OAuth2, с добавлением соответствующего имени зоны.
Для получения токенов доступа с помощью SAML можно использовать один из следующих методов, описанных в этом разделе:
Кроме того, вы можете автоматизировать процесс генерации токенов для пользователей машины, как описано в разделе «Автоматизация процесса генерации токенов» .
Получите токены доступа с помощью функции get_token.
С помощью утилиты get_token вы можете обменять свои учетные данные на токены доступа и обновления OAuth2, которые вы используете с SAML.
Чтобы получить токен доступа с помощью функции get_token:
- Установите переменную среды
SSO_LOGIN_URLна ваш URL-адрес для входа в систему. URL-адрес для входа в систему имеет следующий вид:https://zoneName.login.apigee.com
Например, для зоны с именем "acme" установите
SSO_LOGIN_URLв значение "https://acme.login.apigee.com", как показано в следующем примере:export SSO_LOGIN_URL=https://acme.login.apigee.com
- Вызовите
get_tokenдля получения токена доступа OAuth2:get_token -u me@example.com
Вам будет предложено перейти по указанному URL-адресу, чтобы получить одноразовый пароль:
Get passcode from https://acme.login.apigee.com/passcode [Note: Passcode can be used only time time and expires] Input passcode (no spaces) and then press ENTER:
Если вы недавно не входили в систему через своего поставщика идентификационных данных, вам будет предложено войти снова.
Этот URL-адрес возвращает одноразовый код доступа, который остается действительным до тех пор, пока вы не обновите этот URL-адрес для получения нового кода доступа или не используете код доступа с
get_tokenдля генерации токена доступа. Например:
Введите пароль. Утилита
get_tokenполучает токены OAuth2, выводит токен доступа вstdoutи записывает токены доступа и обновления в~/.sso-cli.- Вызовите API Edge и передайте токен доступа в заголовке
Authorization: Bearer, как показано в следующем примере:curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \ -H "Authorization: Bearer ACCESS_TOKEN"
Значение токена доступа можно скопировать из
stdout.В этом примере получаются подробные сведения об указанной организации. Полный список конечных точек API управления см. в справочнике API Apigee Edge .
Когда срок действия вашего токена доступа истечет, вы можете снова вызвать get_token , чтобы получить новый токен доступа. Например:
get_token -u me@example.com
Вам не потребуется вводить новый пароль до истечения срока действия токена обновления.
Когда срок действия токена обновления истекает, get_token запрашивает у вас новый пароль. Вам необходимо сгенерировать новый пароль, прежде чем вы сможете сгенерировать новый токен доступа OAuth2.
Получайте токены доступа с помощью сервиса Edge OAuth2.
Для получения токенов доступа, используемых с SAML, вы можете использовать сервис Edge OAuth2. Для аутентификации в API Edge вы используете пароль в первом запросе для получения пары токенов доступа/обновления, а затем снова для получения новой пары токенов.
Чтобы получить пару токенов с помощью Edge API:
- Чтобы получить одноразовый пароль, перейдите в браузере по следующему URL-адресу:
https://zoneName.login.apigee.com/passcode
Например, чтобы найти зону с именем "acme", перейдите по следующему URL-адресу:
https://acme.login.apigee.com/passcode
Если вы недавно не входили в систему через своего поставщика идентификационных данных, вам будет предложено войти снова.
Этот URL возвращает одноразовый код доступа, который служит вашими учетными данными для получения токенов и остается действительным до тех пор, пока вы не обновите URL для получения нового кода доступа, или вы можете использовать этот код доступа с
get_tokenдля генерации токена доступа. Например:
- Отправьте запрос к Edge API, как показано в следующем примере:
curl https://zoneName.login.apigee.com/oauth/token \ -s \ -H "Accept: application/json" \ -d 'grant_type=password&response_type=token&passcode=passcode'Код passcode служит вашими учетными данными для авторизации.
Где:
- В заголовке
Authorizationуказано значение "Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" (используйте именно это значение). - Тип запроса —
POST. - В тексте запроса содержится следующее:
-
grant_typeравен "password". -
response_type— "token". -
passcodeгде passcode — это код доступа, полученный на предыдущем шаге.
-
В результате вызова на экран выводятся токены доступа и обновления.
- В заголовке
Чтобы обновить свой токен доступа:
Отправьте запрос по https:// zoneName .login.apigee.com/oauth/token , как показано в следующем примере:
curl https://zoneName.login.apigee.com/oauth/token \
-d 'grant_type=refresh_token&refresh_token=REFRESH_TOKEN'Где:
- В тексте запроса содержится следующее:
-
grant_typeимеет значение "refresh_token". -
refresh_token— это значение токена обновления.
-
- В заголовке
Authorizationуказано значение "Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" (используйте именно это значение). - Тип запроса —
POST.
Получите доступ к Edge API с помощью SAML.
Для доступа к Edge API можно использовать такие инструменты, как curl или удобную утилиту acurl от Apigee.
При curl вы вызываете API Edge и передаете токен доступа в заголовке Authorization: Bearer , как показано в следующем примере:
curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \ -H "Authorization: Bearer ACCESS_TOKEN"
При использовании acurl указывать заголовок Authorization не требуется. Например:
acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval
В этих примерах вызывается конечная точка Edge API, которая получает подробную информацию о заданной организации. Полный список конечных точек Edge API см. в справочнике Apigee Edge API .
Дополнительные способы вызова API, включая способы обеспечения актуальности вашего токена, см. в разделе «Доступ к Edge API с помощью OAuth2» .
Пользователи машин в зонах SAML
С помощью утилит acurl и get_token можно автоматизировать доступ к API Edge для пользователей машин в зонах SAML. В следующем примере показано, как использовать get_token для запроса токена доступа, а затем добавить значение токена к вызову curl :
USER=me@example.comPASS=not-that-secretTOKEN=$(get_token -u $USER:$PASS -m '' --force-basic-auth)curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'
В приведенном выше примере установка значения параметра -m в пустую строку предотвратит запрос на ввод кода многофакторной аутентификации (MFA) для пользователя компьютера. Использование флага --force-basic-auth отменит стандартный запрос на ввод пароля, запускаемый запросами с зонами SAML.
В качестве альтернативы, вы можете объединить запрос токена и вызов curl , используя утилиту acurl . Например:
USER=me@example.comPASS=not-that-secretacurl -u $USER:$PASS -m '' --force-basic-auth 'https://api.enterprise.apigee.com/v1/organizations/...'