Отменить политику 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>

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