Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Что
Позволяет добавлять или обновлять пользовательские атрибуты, связанные с токеном доступа. Пользовательские атрибуты могут включать в себя такие вещи, как название отдела, идентификатор клиента или идентификатор сеанса. См. также Настройка токенов и кодов авторизации .
Вы можете только добавлять или изменять пользовательские атрибуты. Вы не можете использовать эту политику для изменения таких полей, как область действия, статус, 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>
| По умолчанию: | Н/Д |
| Присутствие: | Необходимый |
| Тип: | Нить |
Атрибуты
| Атрибут | Описание | По умолчанию | Присутствие |
|---|---|---|---|
| ссылка | Переменная токена доступа. Обычно извлекается из переменной потока. | Н/Д | Необязательный |
Элемент <Атрибуты>
Набор атрибутов в профиле токена доступа, который будет изменен или дополнен.
| По умолчанию: | Н/Д |
| Присутствие: | Необходимый |
| Тип: | Н/Д |
Элемент <Атрибуты>/<Атрибут>
Отдельный атрибут для обновления.
Атрибут name определяет пользовательское свойство профиля токена доступа, которое необходимо обновить. В этом примере показано, как использовать значение указанной переменной и статическое значение.
<Attributes>
<Attribute name="department.id" ref="request.queryparam.department_id"></Attribute>
<Attribute name="foo">bar</Attribute>
</Attributes>| По умолчанию: | Н/Д |
| Присутствие: | Необязательный |
| Тип: | Н/Д |
Атрибуты
| Атрибут | Описание | По умолчанию | Присутствие |
|---|---|---|---|
| имя | Имя атрибута профиля, который нужно добавить или изменить. | Н/Д | |
| ссылка | Значение, которое необходимо присвоить атрибуту профиля. | Н/Д | Необязательный |
Переменные потока
В случае успеха будут установлены следующие переменные потока:
-
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>