Вы просматриваете документацию 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>