Доступ к Edge API с помощью SAML

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

SAML поддерживает среду единого входа (SSO). Используя SAML с Edge, вы можете поддерживать единый вход для пользовательского интерфейса и API Edge в дополнение к любым другим службам, которые вы предоставляете и которые также поддерживают SAML.

Предварительное условие: вы должны включить SAML хотя бы для одной организации, прежде чем сможете использовать его для доступа к Edge API.

Различия между SAML и OAuth2

После настройки SAML его использование очень похоже на использование OAuth2 для доступа к Edge API . Когда вы вызываете Edge API, вы включаете в свой запрос токен доступа OAuth2.

Ключевое различие между SAML и OAuth2 при доступе к Edge API заключается в способе получения токенов. При использовании SAML при получении пары токенов вы должны включить следующее:

  1. Зоны: пользователи Edge for Public Cloud должны ссылаться на имя своей зоны при получении токенов.
  2. Код доступа: включите одноразовый код доступа при запросе пары токенов доступа/обновления.

SAML использует те же конечные точки в службе Edge OAuth2 с добавлением соответствующего имени зоны.

Чтобы получить токены доступа с помощью SAML, вы можете использовать один из следующих методов, описанных в этом разделе:

Кроме того, вы можете автоматизировать процесс генерации токенов для пользователей компьютеров, как описано в разделе Автоматизация процесса генерации токенов .

Получите токены доступа с помощью get_token

Вы можете использовать утилиту get_token для обмена учетными данными для доступа OAuth2 и токенов обновления, которые вы используете с SAML.

Чтобы получить токен доступа с помощью get_token:

  1. Установите для переменной среды 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
  2. Вызовите 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 для создания токена доступа. Например:

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

  4. Вызовите Edge API и передайте токен доступа в заголовке 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.

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

Чтобы получить пару токенов с помощью Edge API:

  1. В браузере перейдите по следующему URL-адресу, чтобы получить одноразовый код доступа:
    https://zoneName.login.apigee.com/passcode

    Например, для зоны с именем «acme» перейдите по следующему URL-адресу:

    https://acme.login.apigee.com/passcode

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

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

  2. Отправьте запрос в 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 — это «пароль».
      • response_type — «токен».
      • 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 или удобную утилиту Apigee acurl .

С помощью curl вы вызываете Edge API и передаете токен доступа в заголовке 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.com
  PASS=not-that-secret
  TOKEN=$(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.com
  PASS=not-that-secret
  acurl -u $USER:$PASS -m '' --force-basic-auth 'https://api.enterprise.apigee.com/v1/organizations/...'