Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Обзор
Отзывает токены доступа 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>
| По умолчанию | |
|---|---|
| Присутствие | Необязательный |
| Тип | Нить |
| Допустимые значения | Либо переменная потока, содержащая строковый идентификатор приложения, либо строковый литерал. |
элемент <Cascade>
Если 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 года по UTC. |
| Допустимые значения | Это может быть либо переменная потока, содержащая метку времени, либо литеральная метка времени. Метка времени не может относиться к будущему и не может быть раньше 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>Связанные темы
, Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Обзор
Отзывает токены доступа 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>
| По умолчанию | |
|---|---|
| Присутствие | Необязательный |
| Тип | Нить |
| Допустимые значения | Либо переменная потока, содержащая строковый идентификатор приложения, либо строковый литерал. |
элемент <Cascade>
Если 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 года по UTC. |
| Допустимые значения | Это может быть либо переменная потока, содержащая метку времени, либо литеральная метка времени. Метка времени не может относиться к будущему и не может быть раньше 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>