Правило SetOAuthV2Info

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Что

Позволяет добавлять или обновлять специальные атрибуты, связанные с токеном доступа. К специальным атрибутам относятся, например, название отдела, идентификатор клиента или идентификатор сеанса. Также ознакомьтесь со статьей Как настроить токены и коды авторизации.

Вы можете добавлять и изменять только специальные атрибуты. Это правило нельзя использовать для изменения таких полей, как scope, status, expires_in, developer_email, client_id, org_name или refresh_count. Если атрибут уже существует, правило обновит его. Если его нет, правило добавит его. Указанный токен доступа должен быть действительным и иметь статус "Одобрено".

Примеры

Базовый пример

Ниже приведен пример правила, используемого для обновления токена доступа OAuth 2.0. В примере ниже токен доступа в сообщении запроса находится по параметру запроса access_token. Когда клиентское приложение предоставляет токен доступа, правило ниже находит его в параметре запроса. После этого профиль токена доступа будет обновлен. В профиль добавляется дополнительный параметр department.id.

<SetOAuthV2Info name="SetOAuthV2Info"> 
  <AccessToken ref="request.queryparam.access_token"></AccessToken>
  <Attributes>
    <Attribute name="department.id" ref="request.queryparam.department_id"></Attribute>
  </Attributes>
</SetOAuthV2Info>

Справочник элементов

В справочнике по элементам описаны элементы и атрибуты правила SetOAuthV2.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SetOAuthV2Info async="false" continueOnError="false" enabled="true" name="SetOAuthV2Info-1">    
    <DisplayName>Set OAuth v2.0 Info 1</DisplayName>
    <AccessToken ref={some-variable}></AccessToken>
    <Attributes/>
</SetOAuthV2Info>
</xml>

Атрибуты <SetOAuthV2Info>

<SetOAuthV2Info async="false" continueOnError="false" enabled="true" name="Set-OAuth-v20-Info-1">

В следующей таблице описаны атрибуты, общие для всех родительских элементов политики:

Атрибут Описание По умолчанию Присутствие
name

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

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

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

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

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

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

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

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

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

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

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

Элемент <DisplayName>

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

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

Н/Д

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

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

Элемент <AccessToken>

Определяет переменную, в которой находится токен доступа. Например, если токен доступа прикреплен к сообщению запроса в виде параметра запроса, укажите request.queryparam.access_token. Вы можете использовать любую допустимую переменную, которая ссылается на токен. или передать строку токена (редкий случай).

 <AccessToken ref="request.queryparam.access_token"></AccessToken>
По умолчанию: Н/Д
Присутствие Обязательно
Тип: Строка

Атрибуты

Атрибут Описание По умолчанию Тип поля
ref

Переменная токена доступа. Обычно извлекается из переменной потока.

Н/Д Необязательно

Элемент <Attributes>

Набор атрибутов в профиле токена доступа, которые будут изменены или дополнены.

По умолчанию: Н/Д
Присутствие Обязательно
Тип: Н/Д

Элемент <Attributes>/<Attribute>

Отдельный атрибут, который нужно обновить.

Атрибут name определяет дополнительный параметр профиля токена доступа, который нужно обновить. В этом примере показано, как использовать значение переменной и статическое значение.

  <Attributes>
    <Attribute name="department.id" ref="request.queryparam.department_id"></Attribute>
    <Attribute name="foo">bar</Attribute>
  </Attributes>
По умолчанию: Н/Д
Присутствие Необязательно
Тип: Н/Д

Атрибуты

Атрибут Описание По умолчанию Тип поля
name Название атрибута профиля, который нужно добавить или изменить. Н/Д
ref

Значение, которое нужно присвоить атрибуту профиля.

Н/Д Необязательно

Переменные процесса

При успешном выполнении будут заданы следующие переменные потока:

  • oauthv2accesstoken.{policyName}.access_token
  • oauthv2accesstoken.{policyName}.client_id
  • oauthv2accesstoken.{policyName}.refresh_count
  • oauthv2accesstoken.{policyName}.organization_name
  • oauthv2accesstoken.{policyName}.expires_in //--in seconds
  • oauthv2accesstoken.{policyName}.refresh_token_expires_in //--in seconds
  • oauthv2accesstoken.{policyName}.issued_at
  • oauthv2accesstoken.{policyName}.status
  • oauthv2accesstoken.{policyName}.api_product_list
  • oauthv2accesstoken.{policyName}.token_type
  • oauthv2accesstoken.{policyName}.{custom_attribute_name}

Схема

Каждый тип правил определяется схемой XML (.xsd). Схемы правил доступны на GitHub.

Справочник по ошибкам

В этом разделе описаны коды ошибок и сообщения об ошибках, которые возвращаются, а также переменные ошибок, которые задаются Edge, когда это правило вызывает ошибку. Эта информация важна, если вы разрабатываете правила обработки ошибок. Подробнее о том, что нужно знать об ошибках в правилах и об обработке ошибок…

Ошибки времени выполнения

Эти ошибки могут возникать при выполнении правил.

Код ошибки Статус HTTP Причина
steps.oauth.v2.access_token_expired 500 Срок действия токена доступа, отправленного в правило, истек.
steps.oauth.v2.invalid_access_token 500 Токен доступа, отправленный в правило, недействителен.
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound 401 Информацию об устранении этой ошибки можно найти в сообществе Apigee.

Ошибки развертывания

Информацию об ошибках развертывания можно найти в сообщении, которое показывается в интерфейсе.

Переменные ошибок

Эти переменные задаются, когда правило вызывает ошибку во время выполнения.

Переменные Место Пример
fault.name="fault_name" fault_name – название ошибки, указанное в таблице Ошибки выполнения выше. Название ошибки – это последняя часть кода ошибки. fault.name = "invalid_access_token"
oauthV2.policy_name.failed policy_name – заданное пользователем название правила, которое вызвало ошибку. oauthV2.SetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name – заданное пользователем название правила, которое вызвало ошибку. oauthV2.SetTokenInfo.fault.name = invalid_access_token
oauthv2.policy_name.fault.cause policy_name – заданное пользователем название правила, которое вызвало ошибку. oauthV2.SetTokenInfo.cause = Invalid Access Token

Пример ответа об ошибке

{
  "fault": {
    "faultstring": "Invalid Access Token",
    "detail": {
      "errorcode": "keymanagement.service.invalid_access_token"
    }
  }
}

Пример правила обработки ошибок

<FaultRule name=SetOAuthV2Info Faults">
    <Step>
        <Name>AM-InvalidTokenResponse</Name>
        <Condition>(fault.name = "invalid_access_token")</Condition>
    </Step>
    <Condition>(oauthV2.failed = true) </Condition>
</FaultRule>

Статьи по теме