Вы просматриваете документацию по 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:
Как показано на экране 1 , когда вы делаете свой первоначальный запрос к Edge API:
- Вы запрашиваете токен доступа. Вы можете сделать это с помощью 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
- Служба Edge OAuth2 отвечает токеном доступа и выводит его на
stdout
; например:Dy42bGciOiJSUzI1NiJ9.eyJqdGkiOiJhM2YwNjA5ZC1lZTIxLTQ1YjAtOGQyMi04MTQ0MTYxNjNhNTMiLCJz AJpdGUiLCJhcHByb3ZhbHMubWUiLCJvYXV0aC5hcHByb3ZhbHMiXSwiY2xpZW50X2lkIjoiZWRnZWNsaSIsIm NjbGkiLCJhenAiOiJlZGdlY2xpIiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjJkMWU3NDI GzQyMC1kYzgxLTQzMDQtOTM4ZS1hOGNmNmVlODZhNzkiLCJzY29wZSI6WyJzY2ltLm1lIiwib3BlbmlkIiwic ENC05MzhlLWE4Y2Y2ZWU4NmE3OSIsIm9yaWdpbiI6InVzZXJncmlkIiwidXNlcl9uYW1lIjoiZGFuZ2VyNDI0 RI6ImUyNTM2NWQyIiwiaWF0IjoxNTI4OTE2NDA5LCJleHAiOjE1Mjg5MTgyMDksImlzcyI6Imh0dHBzOi8vbG 420iLCJlbWFpbCI6ImRhbmdlcjQyNDJAeWFob28uY29tIiwiYXV0aF90aW1lIjoxNTI4OTE2NDA5LCJhbCI6M 2lLmNvbSIsInppZCI6InVhYSIsImF1ZCI6WyJlZGdlY2xpIiwic2NpbSIsIm9wZW5pZCIsInBhc3N3b3JkIiw
Утилиты
acurl
иget_token
молча сохраняют токены доступа и обновления в~/.sso-cli
(токен обновления не записывается вstdout
.) Если вы используете службу Edge OAuth2 для получения токенов, вам нужно сохранить их для последующего использования самостоятельно. . - Вы отправляете запрос в 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"
- Edge API выполняет ваш запрос и обычно возвращает ответ с данными.
Поток OAuth2: последующие запросы
При последующих запросах вам не нужно обменивать свои учетные данные на токен. Вместо этого вы можете просто включить токен доступа, который у вас уже есть, если срок его действия еще не истек:
Как показано на экране 2 , когда у вас уже есть токен доступа:
- Вы отправляете запрос в Edge API с токеном доступа.
acurl
автоматически прикрепляет токен. Если вы используете другие инструменты, вам необходимо добавить токен вручную. - Edge API выполняет ваш запрос и обычно возвращает ответ с данными.
Поток OAuth2: когда срок действия вашего токена доступа истекает
Когда срок действия токена доступа истекает (через 12 часов), вы можете использовать токен обновления, чтобы получить новый токен доступа:
Как показано на экране 3 , когда срок действия вашего токена доступа истек:
- Вы отправляете запрос в Edge API, но срок действия вашего токена доступа истек.
- Edge API отклоняет ваш запрос как несанкционированный.
- Вы отправляете токен обновления в службу Edge OAuth2. Если вы используете
acurl
, это делается автоматически. - Служба Edge OAuth2 отвечает новым токеном доступа.
- Вы отправляете запрос в Edge API с новым токеном доступа.
- 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.