Использование OAuth2 для доступа к Edge API

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

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

Как работает OAuth2 (с API Apigee Edge)

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

Например, если вы хотите получить подробную информацию об организации в Edge, вы должны отправить запрос на URL-адрес, подобный следующему:

https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

Но вы не можете просто отправить этот запрос, не сказав нам, кто вы такой. В противном случае сведения о вашей организации смогут увидеть все .

Вот здесь и появляется OAuth2: для вашей аутентификации нам нужно, чтобы вы также отправили нам токен доступа в этом запросе. Маркер доступа сообщает нам, кто вы, поэтому мы можем быть уверены, что вам разрешено просматривать сведения об организации.

К счастью, вы можете получить токен, отправив свои учетные данные в службу Edge OAuth2. Служба отвечает токенами доступа и обновления.

Поток OAuth2: первоначальный запрос

На следующем изображении показан поток OAuth2 при первом доступе к Edge API:

Поток OAuth: первый запрос
Рис. 1. Поток OAuth: первый запрос

Как показано на экране 1 , когда вы делаете свой первоначальный запрос к Edge API:

  1. Вы запрашиваете токен доступа. Вы можете сделать это с помощью Edge API , acurl или get_token . Например:
    get_token
    Enter username:
    ahamilton@apigee.com
    Enter the password for user 'ahamilton@apigee.com'
    [hidden input]
    Enter the six-digit code if 'ahamilton@apigee.com' is MFA enabled or press ENTER:
    123456
  2. Служба Edge OAuth2 отвечает токеном доступа и выводит его на stdout ; например:
    Dy42bGciOiJSUzI1NiJ9.eyJqdGkiOiJhM2YwNjA5ZC1lZTIxLTQ1YjAtOGQyMi04MTQ0MTYxNjNhNTMiLCJz
    AJpdGUiLCJhcHByb3ZhbHMubWUiLCJvYXV0aC5hcHByb3ZhbHMiXSwiY2xpZW50X2lkIjoiZWRnZWNsaSIsIm
    NjbGkiLCJhenAiOiJlZGdlY2xpIiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjJkMWU3NDI
    GzQyMC1kYzgxLTQzMDQtOTM4ZS1hOGNmNmVlODZhNzkiLCJzY29wZSI6WyJzY2ltLm1lIiwib3BlbmlkIiwic
    ENC05MzhlLWE4Y2Y2ZWU4NmE3OSIsIm9yaWdpbiI6InVzZXJncmlkIiwidXNlcl9uYW1lIjoiZGFuZ2VyNDI0
    RI6ImUyNTM2NWQyIiwiaWF0IjoxNTI4OTE2NDA5LCJleHAiOjE1Mjg5MTgyMDksImlzcyI6Imh0dHBzOi8vbG
    420iLCJlbWFpbCI6ImRhbmdlcjQyNDJAeWFob28uY29tIiwiYXV0aF90aW1lIjoxNTI4OTE2NDA5LCJhbCI6M
    2lLmNvbSIsInppZCI6InVhYSIsImF1ZCI6WyJlZGdlY2xpIiwic2NpbSIsIm9wZW5pZCIsInBhc3N3b3JkIiw

    Утилиты acurl и get_token молча сохраняют токены доступа и обновления в ~/.sso-cli (токен обновления не записывается в stdout .) Если вы используете службу Edge OAuth2 для получения токенов, вам нужно сохранить их для последующего использования самостоятельно. .

  3. Вы отправляете запрос в Edge API с токеном доступа. acurl автоматически прикрепляет токен; например:
    acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

    Если вы используете другой HTTP-клиент, обязательно добавьте токен доступа. Например:

    curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
      -H "Authorization: Bearer ACCESS_TOKEN"
  4. Edge API выполняет ваш запрос и обычно возвращает ответ с данными.

Поток OAuth2: последующие запросы

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

Поток OAuth: последующие запросы
Рис. 2. Поток OAuth: последующие запросы

Как показано на экране 2 , когда у вас уже есть токен доступа:

  1. Вы отправляете запрос в Edge API с токеном доступа. acurl автоматически прикрепляет токен. Если вы используете другие инструменты, вам необходимо добавить токен вручную.
  2. Edge API выполняет ваш запрос и обычно возвращает ответ с данными.

Поток OAuth2: когда срок действия вашего токена доступа истекает

Когда срок действия токена доступа истекает (через 12 часов), вы можете использовать токен обновления, чтобы получить новый токен доступа:

Поток OAuth: обновление токена доступа
Рис. 3. Процесс OAuth: обновление токена доступа

Как показано на экране 3 , когда срок действия вашего токена доступа истек:

  1. Вы отправляете запрос в Edge API, но срок действия вашего токена доступа истек.
  2. Edge API отклоняет ваш запрос как несанкционированный.
  3. Вы отправляете токен обновления в службу Edge OAuth2. Если вы используете acurl , это делается автоматически.
  4. Служба Edge OAuth2 отвечает новым токеном доступа.
  5. Вы отправляете запрос в Edge API с новым токеном доступа.
  6. Edge API выполняет ваш запрос и обычно возвращает ответ с данными.

Получить токены

Чтобы получить токен доступа, который вы можете отправить в Edge API, вы можете использовать следующие утилиты Apigee в дополнение к такой утилите, как curl :

  • Утилита get_token : обменивает ваши учетные данные Apigee на токены доступа и обновления, которые вы можете использовать для вызова Edge API.
  • Утилита acurl : обеспечивает удобную оболочку для стандартной команды curl . Создает HTTP-запросы к Edge API, получает токены доступа и обновления от get_token и передает токен доступа в Edge API.
  • Конечные точки токенов в службе Edge OAuth2 : обменяйте свои учетные данные Apigee на токены доступа и обновления через вызов Edge API.

Эти утилиты обменивают учетные данные вашей учетной записи Apigee (адрес электронной почты и пароль) на токены со следующими сроками действия:

  • Токены доступа истекают через 12 часов.
  • Жетоны обновления истекают через 30 дней.

В результате, после того как вы успешно выполнили вызов API с помощью acurl или get_token , вы можете продолжать использовать пару токенов в течение 30 дней. По истечении срока действия вы должны повторно ввести свои учетные данные и получить новые токены.

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

Чтобы получить доступ к Edge API, вы отправляете запрос на конечную точку API и включаете токен доступа. Вы можете сделать это с помощью любого HTTP-клиента, включая утилиту командной строки, такую ​​как curl , пользовательский интерфейс на основе браузера, такой как Postman, или утилиту Apigee, такую ​​как acurl .

Доступ к Edge API с помощью acurl и curl описан в следующих разделах.

Используйте акурс

Чтобы получить доступ к Edge API с помощью acurl , ваш первоначальный запрос должен включать ваши учетные данные. Служба Edge OAuth2 отвечает токенами доступа и обновления. acurl сохраняет токены локально.

При последующих запросах acurl использует сохраненные токены в ~/.sso-cli , поэтому вам не нужно снова включать свои учетные данные, пока не истечет срок действия токенов.

В следующем примере показан исходный запрос acurl , который получает сведения об организации «ahamilton-eval»:

acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -u ahamilton@apigee.com
Enter the password for user 'ahamilton@apigee.com'
[hidden input]
Enter the six-digit code (no spaces) if 'ahamilton@apigee.com' is MFA-enabled or press ENTER:
1a2b3c
{
  "createdAt" : 1491854501264,
  "createdBy" : "noreply_iops@apigee.com",
  "displayName" : "ahamilton",
  "environments" : [ "prod", "test" ],
  "lastModifiedAt" : 1491854501264,
  "lastModifiedBy" : "noreply_iops@apigee.com",
  "name" : "ahamilton",
  "properties" : {
    "property" : [ {
      "name" : "features.isSmbOrganization",
      "value" : "false"
    }, {
      "name" : "features.isCpsEnabled",
      "value" : "true"
    } ]
  },
  "type" : "trial"
}

acurl https://api.enterprise.apigee.com/v1/o/ahamilton-eval/apis/helloworld/revisions/1/policies

[ "SOAP-Message-Validation-1", "Spike-Arrest-1", "XML-to-JSON-1" ]

В дополнение к получению сведений об организации в этом примере также показан второй запрос, который получает список политик в прокси-сервере API «helloworld». Второй запрос использует сокращение «о» для «организаций» в URL-адресе.

Обратите внимание, что acurl автоматически передает токен доступа при втором запросе. Вам не нужно передавать свои учетные данные пользователя после того, как acurl сохранит токены OAuth2. Он получает токен из ~/.sso-cli для последующих вызовов.

Дополнительные сведения см. в разделе Использование acurl для доступа к Edge API .

Использовать завиток

Вы можете использовать curl для доступа к Edge API. Для этого необходимо сначала получить токены доступа и обновления. Вы можете получить их с помощью такой утилиты, как get_token или службы Edge OAuth2. .

После того, как вы успешно сохранили свой токен доступа, вы передаете его в заголовке Authorization ваших вызовов к Edge API, как показано в следующем примере:

curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -H "Authorization: Bearer ACCESS_TOKEN"

Токен доступа действителен в течение 12 часов после его выдачи. После истечения срока действия маркера доступа маркер обновления можно использовать в течение 30 дней для выпуска другого маркера доступа без запроса учетных данных. Apigee рекомендует запрашивать новый токен доступа только после истечения срока действия токена referesh, а не вводить учетные данные и делать новый запрос при каждом вызове API.

Срок действия токена

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

То, как вы обновляете свой токен доступа, зависит от того, какой инструмент вы используете:

  • acurl : Никаких действий не требуется. acurl автоматически обновляет токен доступа, когда вы отправляете запрос, содержащий устаревший.
  • get_token : вызовите get_token , чтобы обновить токен доступа.
  • Служба Edge OAuth2 : отправьте запрос, который включает:
    • Обновить токен
    • Параметр формы grant_type установлен на «refresh_token»

OAuth2 для пользователей компьютеров

Вы можете использовать утилиты acurl и get_token для автоматического доступа к API-интерфейсам Edge с аутентификацией OAuth2 для пользователей компьютеров. В следующем примере показано, как использовать get_token для запроса токена доступа, а затем добавить значение токена к вызову curl :

  USER=me@example.com
  PASS=not-that-secret
  TOKEN=$(get_token -u $USER:$PASS -m '')
  curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'

Кроме того, вы можете совместить запрос токена и вызов curl с помощью утилиты acurl . Например:

  USER=me@example.com
  PASS=not-that-secret
  acurl -u $USER:$PASS -m '' 'https://api.enterprise.apigee.com/v1/organizations/...'
  

В обоих примерах установка значения -m в пустую строку не позволит пользователю компьютера ввести код MFA.