Отменить политику OAuth V2

Вы просматриваете документацию 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, включают идентификатор приложения разработчика, связанный с этим токеном. Затем вы можете отозвать токены на основе этого идентификатора приложения.

Отзыв по идентификатору конечного пользователя приложения

Отозвать токены доступа 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

Внутреннее имя политики. Значение атрибута name может содержать буквы, цифры, пробелы, дефисы, подчеркивания и точки. Это значение не может превышать 255 символов.

При необходимости используйте элемент <DisplayName> , чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим именем на естественном языке.

Н/Д Необходимый
continueOnError

Установите значение false , чтобы возвращать ошибку в случае сбоя политики. Это ожидаемое поведение для большинства политик.

Установите значение true , чтобы выполнение потока продолжалось даже после сбоя политики.

ЛОЖЬ Необязательный
enabled

Установите значение true , чтобы обеспечить соблюдение политики.

Установите значение false , чтобы отключить политику. Политика не будет применена, даже если она останется привязанной к потоку.

истинный Необязательный
async

Этот атрибут устарел.

ЛОЖЬ Устарело

Элемент <DisplayName>

Используйте в дополнение к атрибуту name , чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим именем на естественном языке.

<DisplayName>Policy Display Name</DisplayName>
По умолчанию

Н/Д

Если вы опустите этот элемент, будет использовано значение атрибута name политики.

Присутствие Необязательный
Тип Нить

Элемент <AppID>

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

<AppId>appIdString</AppId>

or:

<AppId ref="request.queryparam.app_id"></AppId>
По умолчанию

request.formparam.app_id (x-www-form-urlencoded и указан в теле запроса)

Присутствие

Необязательный

Тип Нить
Допустимые значения

Либо переменная потока, содержащая строку идентификатора приложения, либо литеральная строка.

Элемент <Каскад>

Если true и у вас есть традиционный непрозрачный токен доступа, то и токен обновления, и токен доступа будут отозваны, если <AppId> или <EndUserId> совпадают. Если false , отменяется только токен доступа, а токен обновления не изменяется. То же самое поведение применимо только для непрозрачных токенов доступа.

<Cascade>false<Cascade>
По умолчанию

ЛОЖЬ

Присутствие

Необязательный

Тип логическое значение
Допустимые значения true или false

Элемент <EndUserId>

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

<EndUserId>userIdString</EndUserId>

or:

<EndUserId ref="request.queryparam.access_token"></EndUserId>
По умолчанию

request.formparam.enduser_id (x-www-form-urlencoded и указанный в теле запроса)

Присутствие

Необязательный

Тип Нить
Допустимые значения

Либо переменная потока, содержащая строку идентификатора пользователя, либо литеральная строка.

Элемент <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>

Связанные темы