Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Обзор
Отменяет токены доступа OAuth2, связанные с идентификатором приложения разработчика или идентификатором конечного пользователя приложения или с обоими.
Используйте политику OAuthv2 для создания токена доступа OAuth 2.0. Токен, сгенерированный Apigee, имеет следующий формат:
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", //--in seconds "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "token_type" : "BearerToken", "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP", "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL", "organization_name" : "myorg", "refresh_token_expires_in" : "0", //--in seconds "refresh_count" : "0" }
Элемент application_name
содержит идентификатор приложения разработчика, связанный с токеном.
По умолчанию Apigee не включает в токен идентификатор конечного пользователя. Вы можете настроить Apigee для включения идентификатора конечного пользователя, добавив элемент <AppEndUser>
в политику OAuthv2 :
<OAuthV2 name="GenerateAccessTokenClient"> <Operation>GenerateAccessTokenV/Operation> ... <AppEndUser>request.queryparam.app_enduser</AppEndUser> </OAuthV2>
В этом примере передайте идентификатор конечного пользователя в политику OAuthv2 в параметре запроса с именем app_enduser
. Затем идентификатор конечного пользователя включается в токен элемента app_enduser
:
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "app_enduser" : "6ZG094fgnjNf02EK", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", //--in seconds "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "token_type" : "BearerToken", "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP", "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL", "organization_name" : "myorg", "refresh_token_expires_in" : "0", //--in seconds "refresh_count" : "0" }
Отзыв по идентификатору приложения разработчика
Отозвать токены доступа OAuth2, связанные с идентификатором приложения разработчика. Все токены доступа OAuth2, созданные Apigee, включают идентификатор приложения разработчика, связанный с этим токеном. Затем вы можете отозвать токены на основе этого идентификатора приложения.
Используйте API приложений для разработчиков , чтобы получить список идентификаторов приложений для конкретного разработчика.
Вы также можете использовать API приложений для разработчиков, чтобы получить подробную информацию о приложении.
Отзыв по идентификатору конечного пользователя приложения
Отозвать токены доступа OAuth2, связанные с определенным идентификатором конечного пользователя приложения. Это токен, связанный с идентификатором пользователя, которому были выданы токены.
По умолчанию в токене доступа OAuth нет поля для идентификатора конечного пользователя. Чтобы включить отзыв токенов доступа OAuth 2.0 по идентификатору конечного пользователя, необходимо настроить политику OAuthv2 для включения идентификатора пользователя в токен, как показано выше.
Чтобы получить идентификатор конечного пользователя приложения, используйте API приложений для разработчиков .
Образцы
В следующих примерах используется политика Revoke OAuth V2 для отзыва токенов доступа OAuth2.
Идентификатор приложения разработчика
Чтобы отозвать токены доступа по идентификатору приложения разработчика, используйте элемент <AppId>
в своей политике.
В следующем примере предполагается найти идентификатор приложения разработчика токена доступа в параметре запроса с именем app_id
:
<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy"> <DisplayName>Revoke OAuth v2.0-1</DisplayName> <AppId ref="request.queryparam.app_id"></AppId> </RevokeOAuthV2>
Учитывая идентификатор приложения разработчика, политика отзывает токен доступа.
Отозвать до отметки времени
Чтобы отозвать токены доступа по идентификатору приложения разработчика, созданные до определенной даты и времени, используйте элемент <RevokeBeforeTimestamp>
в своей политике. <RevokeBeforeTimestamp>
указывает время в формате UTC в миллисекундах. Все токены, выпущенные до этого времени, аннулируются.
В следующем примере отзываются токены доступа для приложения разработчика, созданного до 1 июля 2019 г.:
<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy"> <DisplayName>Revoke OAuth v2.0-1</DisplayName> <AppId ref="request.queryparam.app_id"></AppId> <RevokeBeforeTimestamp>1561939200000</RevokeBeforeTimestamp> </RevokeOAuthV2>
Элемент <RevokeBeforeTimestamp>
принимает 64-битное (длинное) целое число, представляющее количество миллисекунд, прошедших с полуночи 1 января 1970 года по всемирному координированному времени (UTC).
Ссылка на элемент
Ссылка на элемент описывает элементы и атрибуты политики RevokeOAuthV2.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RevokeOAuthV2 continueOnError="false" enabled="true" name="GetOAuthV2Info-1"> <DisplayName>Get OAuth v2.0 Info 1</DisplayName> <AppId ref="variable"></AppId> <EndUserId ref="variable"></EndUserId> <RevokeBeforeTimestamp ref="variable"></RevokeBeforeTimestamp> <Cascade>false</Cascade> </RevokeOAuthV2>
Атрибуты <RevokeOAuthV2>
<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">
В следующей таблице описаны атрибуты, общие для всех родительских элементов политики:
Атрибут | Описание | По умолчанию | Присутствие |
---|---|---|---|
name | Внутреннее имя политики. Значение атрибута При необходимости используйте элемент | Н/Д | Необходимый |
continueOnError | Установите значение Установите значение | ЛОЖЬ | Необязательный |
enabled | Установите значение Установите значение | истинный | Необязательный |
async | Этот атрибут устарел. | ЛОЖЬ | Устарело |
Элемент <DisplayName>
Используйте в дополнение к атрибуту name
, чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим именем на естественном языке.
<DisplayName>Policy Display Name</DisplayName>
По умолчанию | Н/Д Если вы опустите этот элемент, будет использовано значение атрибута |
---|---|
Присутствие | Необязательный |
Тип | Нить |
Элемент <AppID>
Указывает идентификатор приложения разработчика токенов, которые необходимо отозвать. Передайте либо переменную, содержащую идентификатор приложения, либо буквальный идентификатор приложения.
<AppId>appIdString</AppId> or: <AppId ref="request.queryparam.app_id"></AppId>
По умолчанию | |
---|---|
Присутствие | Необязательный |
Тип | Нить |
Допустимые значения | Либо переменная потока, содержащая строку идентификатора приложения, либо литеральная строка. |
Элемент <Каскад>
Если true
и у вас есть традиционный непрозрачный токен доступа, то и токен обновления, и токен доступа будут отозваны, если <AppId>
или <EndUserId>
совпадают. Если false
, отменяется только токен доступа, а токен обновления не изменяется. То же самое поведение применимо только для непрозрачных токенов доступа.
<Cascade>false<Cascade>
По умолчанию | ЛОЖЬ |
---|---|
Присутствие | Необязательный |
Тип | логическое значение |
Допустимые значения | true или false |
Элемент <EndUserId>
Указывает идентификатор конечного пользователя приложения для отзываемого токена. Передайте либо переменную, содержащую идентификатор пользователя, либо буквальную строку токена.
<EndUserId>userIdString</EndUserId> or: <EndUserId ref="request.queryparam.access_token"></EndUserId>
По умолчанию | |
---|---|
Присутствие | Необязательный |
Тип | Нить |
Допустимые значения | Либо переменная потока, содержащая строку идентификатора пользователя, либо литеральная строка. |
Элемент <RevokeBeforeTimestamp>
Отозвать токены, выпущенные до указанной временной метки. Этот элемент работает с <AppId>
и <EndUserId>
, позволяя вам отозвать токены до определенного времени. Значением по умолчанию является время выполнения политики.
<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp> or: <RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
По умолчанию | Временная метка выполнения политики. |
---|---|
Присутствие | Необязательный |
Тип | 64-битное (длинное) целое число, представляющее количество миллисекунд, прошедших с полуночи 1 января 1970 года по всемирному координированному времени. |
Допустимые значения | Либо переменная потока, содержащая временную метку, либо литеральная временная метка. Временная метка не может быть в будущем и не может быть раньше 1 января 2014 года. |
Переменные потока
Политика RevokeOAuthV2 не устанавливает переменные потока.
Ссылка на ошибку
В этом разделе описаны коды ошибок и сообщения об ошибках, которые возвращаются, а также переменные ошибок, которые устанавливаются Edge, когда эта политика вызывает ошибку. Эту информацию важно знать, если вы разрабатываете правила обработки ошибок. Дополнительные сведения см. в разделах Что нужно знать об ошибках политики и Обработка ошибок .
Ошибки выполнения
Эти ошибки могут возникать при выполнении политики. Имена ошибок, показанные ниже, представляют собой строки, которые присваиваются переменной fault.name
при возникновении ошибки. Более подробную информацию см. в разделе «Переменные неисправности» ниже.
Код неисправности | Статус HTTP | Причина |
---|---|---|
steps.oauth.v2.InvalidFutureTimestamp | 500 | Временная метка не может быть в будущем. |
steps.oauth.v2.InvalidEarlyTimestamp | 500 | Временная метка не может быть ранее 1 января 2014 г. |
steps.oauth.v2.InvalidTimestamp | 500 | Недопустимая временная метка. |
steps.oauth.v2.EmptyAppAndEndUserId | 500 | И AppdId , и EndUserId не могут быть пустыми. |
Ошибки развертывания
Обратитесь к сообщению, отображаемому в пользовательском интерфейсе, для получения информации об ошибках развертывания.
Переменные неисправности
Эти переменные устанавливаются, когда эта политика вызывает ошибку во время выполнения.
Переменные | Где | Пример |
---|---|---|
fault.name=" fault_name " | fault_name — это имя ошибки, как указано в таблице ошибок времени выполнения выше. Имя неисправности — это последняя часть кода неисправности. | fault.name Matches "IPDeniedAccess" |
oauthV2. policy_name .failed | policy_name — указанное пользователем имя политики, вызвавшей ошибку. | oauthV2.GetTokenInfo.failed = true |
oauthV2. policy_name .fault.name | policy_name — указанное пользователем имя политики, вызвавшей ошибку. | oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id |
oauthV2. policy_name .fault.cause | policy_name — указанное пользователем имя политики, вызвавшей ошибку. | oauthV2.GetTokenInfo.cause = ClientID is Invalid |
Пример ответа об ошибке
{ "fault":{ "faultstring":"Timestamp is in the future.", "detail":{ "errorcode":"steps.oauth.v2.InvalidFutureTimestamp" } } }
Пример правила неисправности
<FaultRule name="RevokeOAuthV2 Faults"> <Step> <Name>AM-InvalidTimestamp</Name> </Step> <Condition>(fault.name = "InvalidFutureTimestamp")</Condition> </FaultRule>