Вы просматриваете документацию по 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 | Внутреннее имя политики. Значение атрибута При необходимости используйте элемент | Н/Д | Необходимый |
continueOnError | Установите значение Установите значение | ЛОЖЬ | Необязательный |
enabled | Установите значение Установите значение | истинный | Необязательный |
async | Этот атрибут устарел. | ЛОЖЬ | Устарело |
Элемент <DisplayName>
Используйте в дополнение к атрибуту name , чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим именем на естественном языке.
<DisplayName>Policy Display Name</DisplayName>
| По умолчанию | Н/Д Если вы опустите этот элемент, будет использовано значение атрибута |
|---|---|
| Присутствие | Необязательный |
| Тип | Нить |
Элемент <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_tokenoauthv2accesstoken.{policyName}.client_idoauthv2accesstoken.{policyName}.refresh_countoauthv2accesstoken.{policyName}.organization_nameoauthv2accesstoken.{policyName}.expires_in //--in secondsoauthv2accesstoken.{policyName}.refresh_token_expires_in //--in secondsoauthv2accesstoken.{policyName}.issued_atoauthv2accesstoken.{policyName}.statusoauthv2accesstoken.{policyName}.api_product_listoauthv2accesstoken.{policyName}.token_typeoauthv2accesstoken.{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>