Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Что
Получает атрибуты токенов доступа, токенов обновления, кодов авторизации и атрибутов клиентского приложения и заполняет переменные значениями этих атрибутов.
Эта политика полезна, когда вам необходимо настроить динамическое, условное поведение в зависимости от значения токена или кода авторизации. При каждой проверке токена переменные автоматически заполняются значениями атрибутов токена. Однако в случаях, когда проверка токена не проводилась, вы можете использовать эту функцию для явного заполнения переменных значениями атрибутов токена. См. также раздел «Настройка токенов и кодов авторизации» .
Токен доступа, передаваемый в эту политику, должен быть действительным, иначе политика выдаст ошибку invalid_access_token .
Образцы
В приведенных ниже примерах используется политика Get OAuth V2 Info для получения информации о различных компонентах рабочего процесса OAuth2, а затем осуществляется доступ к этой информации в коде.
токен доступа
Чтобы получить ссылку на токен доступа, используйте элемент <AccessToken> в вашей политике.
В следующем примере предполагается, что токен доступа будет найден в параметре запроса с именем "access_token" (фактические детали реализации остаются на ваше усмотрение):
<GetOAuthV2Info name="MyTokenAttrsPolicy"> <AccessToken ref="request.queryparam.access_token"></AccessToken> </GetOAuthV2Info>
Получив токен доступа, политика находит профиль этого токена и заполняет набор переменных данными профиля.
Затем вы можете получить доступ к переменным, используя JavaScript или другие средства. В следующем примере с помощью JavaScript извлекаются области действия, связанные с токеном доступа:
var scope = context.getVariable('oauthv2accesstoken.MyTokenAttrsPolicy.scope');
Обратите внимание, что для доступа к этим переменным в коде необходимо добавить префикс "oauthv2accesstoken". Полный список переменных, доступных через токен доступа, см. в разделе "Переменные токена доступа" .
код авторизации
Чтобы получить атрибуты кода авторизации, используйте элемент <AuthorizationCode> в вашей политике.
В следующем примере предполагается, что токен доступа будет найден в параметре формы с именем "code" (фактические детали реализации остаются на ваше усмотрение):
<GetOAuthV2Info name="MyAuthCodeAttrsPolicy"> <AuthorizationCode ref="request.formparam.code"></AuthorizationCode> </GetOAuthV2Info>
Получив код авторизации, политика находит информацию о коде и заполняет набор переменных данными этого кода.
Затем вы можете получить доступ к переменным, используя JavaScript или другие средства. В следующем примере с помощью JavaScript извлекается пользовательский атрибут, связанный с кодом авторизации:
var attr = context.getVariable(‘oauthv2authcode.MyAuthCodeAttrsPolicy.custom_attribute_name’);
Обратите внимание, что для доступа к этим переменным в коде необходимо добавить префикс "oauthv2authcode". Полный список переменных, доступных через код авторизации, см. в разделе "Переменные кода авторизации ".
Токен обновления
Чтобы получить атрибуты токена обновления, используйте элемент <RefreshToken> в вашей политике.
В следующем примере предполагается, что токен доступа будет найден в параметре запроса с именем "refresh_token" (фактические детали реализации остаются на ваше усмотрение):
<GetOAuthV2Info name="MyRefreshTokenAttrsPolicy"> <RefreshToken ref="request.queryparam.refresh_token"/> </GetOAuthV2Info>
Получив токен обновления, политика находит информацию о нем и заполняет набор переменных данными из токена обновления.
Затем вы можете получить доступ к этим переменным с помощью JavaScript или другими способами. В следующем примере с помощью JavaScript извлекается пользовательский атрибут, связанный с токеном обновления:
var attr = context.getVariable(‘oauthv2refreshtoken.MyRefreshTokenAttrsPolicy.accesstoken.custom_attribute_name’);
Обратите внимание, что для доступа к переменным в коде необходимо добавить префикс "oauthv2refreshtoken". Полный список переменных, доступных через токен обновления, см. в разделе «Переменные токена обновления» .
Статический
В некоторых редких случаях может потребоваться получить профиль статически сконфигурированного токена (недоступного через переменную). Это можно сделать, указав значение токена доступа в качестве элемента.
<GetOAuthV2Info name="GetTokenAttributes"> <AccessToken>shTUmeI1geSKin0TODcGLXBNe9vp</AccessToken> </GetOAuthV2Info>
Это можно сделать и со всеми другими типами токенов (идентификатор клиента, код авторизации и токены обновления).
Идентификатор клиента
В этом примере показано, как получить информацию о клиентском приложении, используя идентификатор клиента. При выполнении политика заполняет набор переменных информацией о клиенте. В данном случае политика ожидает найти идентификатор клиента в параметре запроса с именем client_id . Имея идентификатор клиента, политика ищет профиль клиента и заполняет набор переменных данными профиля. Переменные будут иметь префикс oauthv2client.
<GetOAuthV2Info name="GetClientAttributes"> <ClientId ref="request.queryparam.client_id"></ClientId> </GetOAuthV2Info>
Затем вы можете получить доступ к переменным, используя JavaScript или другие средства. Например, чтобы получить имя приложения разработчика и адрес электронной почты разработчика, связанные с клиентским приложением, используя JavaScript:
context.getVariable("oauthv2client.GetClientAttributes.developer.email");
context.getVariable("oauthv2client.GetClientAttributes.developer.app.name");Ссылка на элемент
В справочном документе по элементам описаны элементы и атрибуты политики GetOAuthV2Info.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="GetOAuthV2Info-1" <DisplayName>Get OAuth v2.0 Info 1</DisplayName> <AccessToken ref="variable"></AccessToken> <AuthorizationCode ref="variable"></AuthorizationCode> <ClientId ref="variable"></ClientId> <RefreshToken ref="variable"></RefreshToken> </GetOAuthV2Info>
атрибуты <GetOAuthV2Info>
<GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="Get-OAuth-v20-Info-1">
В следующей таблице описаны атрибуты, общие для всех родительских элементов политики:
| Атрибут | Описание | По умолчанию | Присутствие |
|---|---|---|---|
name | Внутреннее имя политики. Значение атрибута При необходимости используйте элемент | Н/Д | Необходимый |
continueOnError | Установите значение Установите значение | ЛОЖЬ | Необязательный |
enabled | Установите значение Установите значение | истинный | Необязательный |
async | Этот атрибут устарел. | ЛОЖЬ | Устарело |
Элемент <DisplayName>
Используйте в дополнение к атрибуту name , чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим именем на естественном языке.
<DisplayName>Policy Display Name</DisplayName>
| По умолчанию | Н/Д Если вы опустите этот элемент, будет использовано значение атрибута |
|---|---|
| Присутствие | Необязательный |
| Тип | Нить |
элемент <AccessToken>
Получает профиль для токена доступа. Вы можете передать либо переменную, содержащую строку токена доступа, либо строку токена в буквальном смысле (редкий случай). В этом примере токен доступа извлекается из параметра запроса, переданного в запросе. Используйте элемент <IgnoreAccessTokenStatus>, если хотите получить информацию об отозванном или просроченном токене.
<AccessToken ref="request.queryparam.access_token"></AccessToken>
По умолчанию: | request.formparam.access_token (значение x-www-form-urlencoded, указанное в теле запроса) |
Присутствие: | Необязательный |
| Тип: | Нить |
| Допустимые значения: | Либо переменная потока, содержащая строку токена доступа, либо строковый литерал. |
элемент <AuthorizationCode>
Получает профиль для кода авторизации. Вы можете передать либо переменную, содержащую строку кода авторизации, либо строку токена (редкий случай). В этом примере код авторизации извлекается из параметра запроса, переданного в запросе. Список переменных, заполняемых этой операцией, см. в разделе « Переменные потока ».
<AuthorizationCode ref="request.queryparam.authorization_code"></AuthorizationCode>
По умолчанию: | request.formparam.access_token (значение x-www-form-urlencoded, указанное в теле запроса) |
Присутствие: | Необязательный |
| Тип: | Нить |
| Допустимые значения: | Либо переменная потока, содержащая строку кода авторизации, либо строковый литерал. |
элемент <ClientId>
Получает информацию, относящуюся к идентификатору клиента. В этом примере идентификатор клиента извлекается из параметра запроса, переданного в запросе. Список переменных, заполняемых этой операцией, см. в разделе « Переменные потока ».
<ClientId ref="request.queryparam.client_id"></ClientId>По умолчанию: | request.formparam.access_token (значение x-www-form-urlencoded, указанное в теле запроса) |
Присутствие: | Необязательный |
| Тип: | Нить |
| Допустимые значения: | Либо переменная потока, содержащая строку кода авторизации, либо строковый литерал. |
<IgnoreAccessTokenStatus> элемент
Возвращает информацию о токене, даже если токен просрочен или отозван. Этот элемент можно использовать только с токенами доступа. Информация для других сущностей, таких как токены обновления и коды авторизации, возвращается независимо от их статуса по умолчанию.
<IgnoreAccessTokenStatus>true</IgnoreAccessTokenStatus>
По умолчанию: | ЛОЖЬ |
Присутствие: | Необязательный |
| Тип: | Логический |
| Допустимые значения: | верно или неверно |
<RefreshToken> элемент
Получает профиль для токена обновления. Вы можете передать либо переменную, содержащую строку токена обновления, либо строку токена в буквальном смысле (редкий случай). В этом примере токен обновления извлекается из параметра запроса, переданного в запросе. Список переменных, заполняемых этой операцией, см. в разделе « Переменные потока ».
<RefreshToken ref="request.queryparam.refresh_token"></RefreshToken>
По умолчанию: | request.formparam.access_token (значение x-www-form-urlencoded, указанное в теле запроса) |
Присутствие: | Необязательный |
| Тип: | Нить |
| Допустимые значения: | Либо переменная потока, содержащая строку токена обновления, либо строковый литерал. |
Переменные потока
Политика GetOAuthV2Info заполняет эти переменные и обычно используется в случаях, когда вам необходимы данные профиля, но предоставление доступа или проверка еще не произошли.
переменные идентификатора клиента
Эти переменные заполняются при установке значения элемента ClientId:
oauthv2client.{policy_name}.client_id
oauthv2client.{policy_name}.client_secret
oauthv2client.{policy_name}.redirection_uris // Note the spelling -- 'redirection_uris'
oauthv2client.{policy_name}.developer.email
oauthv2client.{policy_name}.developer.app.name
oauthv2client.{policy_name}.developer.id
oauthv2client.{policy_name}.{developer_app_custom_attribute_name}переменные токена доступа
Эти переменные заполняются при установке значения элемента AccessToken:
oauthv2accesstoken.{policy_name}.developer.id oauthv2accesstoken.{policy_name}.developer.app.name oauthv2accesstoken.{policy_name}.developer.app.id oauthv2accesstoken.{policy_name}.developer.email oauthv2accesstoken.{policy_name}.organization_name oauthv2accesstoken.{policy_name}.api_product_list oauthv2accesstoken.{policy_name}.access_token oauthv2accesstoken.{policy_name}.scope oauthv2accesstoken.{policy_name}.expires_in //in seconds oauthv2accesstoken.{policy_name}.status oauthv2accesstoken.{policy_name}.client_id oauthv2accesstoken.{policy_name}.accesstoken.{custom_attribute_name} oauthv2accesstoken.{policy_name}.refresh_token oauthv2accesstoken.{policy_name}.refresh_token_status oauthv2accesstoken.{policy_name}.refresh_token_expires_in //in seconds oauthv2accesstoken.{policy_name}.refresh_count oauthv2accesstoken.{policy_name}.refresh_token_issued_at oauthv2accesstoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED
переменные кода авторизации
Эти переменные заполняются при установке значения элемента AuthorizationCode:
oauthv2authcode.{policy_name}.code
oauthv2authcode.{policy_name}.scope
oauthv2authcode.{policy_name}.redirect_uri
oauthv2authcode.{policy_name}.client_id
oauthv2authcode.{policy_name}.{auth_code_custom_attribute_name}Переменные токена обновления
Эти переменные заполняются при установке значения элемента RefreshToken:
oauthv2refreshtoken.{policy_name}.developer.id oauthv2refreshtoken.{policy_name}.developer.app.name oauthv2refreshtoken.{policy_name}.developer.app.id oauthv2refreshtoken.{policy_name}.developer.email oauthv2refreshtoken.{policy_name}.organization_name oauthv2refreshtoken.{policy_name}.api_product_list oauthv2refreshtoken.{policy_name}.access_token oauthv2refreshtoken.{policy_name}.scope oauthv2refreshtoken.{policy_name}.expires_in //in seconds oauthv2refreshtoken.{policy_name}.status oauthv2refreshtoken.{policy_name}.client_id oauthv2refreshtoken.{policy_name}.accesstoken.{custom_attribute_name} oauthv2refreshtoken.{policy_name}.refresh_token oauthv2refreshtoken.{policy_name}.refresh_token_status oauthv2refreshtoken.{policy_name}.refresh_token_expires_in //in seconds oauthv2refreshtoken.{policy_name}.refresh_count oauthv2refreshtoken.{policy_name}.refresh_token_issued_at oauthv2refreshtoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED
Схема
Каждый тип политики определяется XML-схемой ( .xsd ). Для справки, схемы политик доступны на GitHub.
Ссылка на ошибку
В этом разделе описаны коды ошибок и сообщения об ошибках, которые возвращаются, а также переменные ошибок, которые устанавливаются Edge, когда эта политика вызывает ошибку. Эту информацию важно знать, если вы разрабатываете правила обработки ошибок. Дополнительные сведения см. в разделах Что нужно знать об ошибках политики и Обработка ошибок .
Ошибки выполнения
Эти ошибки могут возникнуть при выполнении политики. Имена ошибок, показанные ниже, представляют собой строки, которые присваиваются переменной fault.name при возникновении ошибки. Более подробную информацию см. в разделе «Переменные неисправности» ниже.
| Код неисправности | Статус HTTP | Причина |
|---|---|---|
steps.oauth.v2.access_token_expired | 500 | Срок действия маркера доступа, отправленного в политику, истек. |
steps.oauth.v2.authorization_code_expired | 500 | Срок действия кода авторизации, отправленного в политику, истек. |
steps.oauth.v2.invalid_access_token | 500 | Токен доступа, отправленный в политику, недействителен. |
steps.oauth.v2.invalid_client-invalid_client_id | 500 | Идентификатор клиента, отправленный в политику, недействителен. |
steps.oauth.v2.invalid_refresh_token | 500 | Токен обновления, отправленный в политику, недействителен. |
steps.oauth.v2.invalid_request-authorization_code_invalid | 500 | Код авторизации, отправленный в политику, недействителен. |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound | 401 | Пожалуйста, прочтите этот пост сообщества Apigee для получения информации об устранении этой ошибки. |
steps.oauth.v2.refresh_token_expired | 500 | Срок действия токена обновления, отправленного в политику, истек. |
Ошибки развертывания
Обратитесь к сообщению, отображаемому в пользовательском интерфейсе, для получения информации об ошибках развертывания.
Переменные неисправности
Эти переменные устанавливаются, когда эта политика вызывает ошибку во время выполнения.
| Переменные | Где | Пример |
|---|---|---|
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":"ClientId is Invalid", "detail":{ "errorcode":"keymanagement.service.invalid_client-invalid_client_id" } } }
Пример правила неисправности
<FaultRule name="OAuthV2 Faults">
<Step>
<Name>AM-InvalidClientIdResponse</Name>
</Step>
<Condition>(fault.name = "invalid_client-invalid_client_id")</Condition>
</FaultRule>Связанные темы
, Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Что
Получает атрибуты токенов доступа, токенов обновления, кодов авторизации и атрибутов клиентского приложения и заполняет переменные значениями этих атрибутов.
Эта политика полезна, когда вам необходимо настроить динамическое, условное поведение в зависимости от значения токена или кода авторизации. При каждой проверке токена переменные автоматически заполняются значениями атрибутов токена. Однако в случаях, когда проверка токена не проводилась, вы можете использовать эту функцию для явного заполнения переменных значениями атрибутов токена. См. также раздел «Настройка токенов и кодов авторизации» .
Токен доступа, передаваемый в эту политику, должен быть действительным, иначе политика выдаст ошибку invalid_access_token .
Образцы
В приведенных ниже примерах используется политика Get OAuth V2 Info для получения информации о различных компонентах рабочего процесса OAuth2, а затем осуществляется доступ к этой информации в коде.
токен доступа
Чтобы получить ссылку на токен доступа, используйте элемент <AccessToken> в вашей политике.
В следующем примере предполагается, что токен доступа будет найден в параметре запроса с именем "access_token" (фактические детали реализации остаются на ваше усмотрение):
<GetOAuthV2Info name="MyTokenAttrsPolicy"> <AccessToken ref="request.queryparam.access_token"></AccessToken> </GetOAuthV2Info>
Получив токен доступа, политика находит профиль этого токена и заполняет набор переменных данными профиля.
Затем вы можете получить доступ к переменным, используя JavaScript или другие средства. В следующем примере с помощью JavaScript извлекаются области действия, связанные с токеном доступа:
var scope = context.getVariable('oauthv2accesstoken.MyTokenAttrsPolicy.scope');
Обратите внимание, что для доступа к этим переменным в коде необходимо добавить префикс "oauthv2accesstoken". Полный список переменных, доступных через токен доступа, см. в разделе "Переменные токена доступа" .
код авторизации
Чтобы получить атрибуты кода авторизации, используйте элемент <AuthorizationCode> в вашей политике.
В следующем примере предполагается, что токен доступа будет найден в параметре формы с именем "code" (фактические детали реализации остаются на ваше усмотрение):
<GetOAuthV2Info name="MyAuthCodeAttrsPolicy"> <AuthorizationCode ref="request.formparam.code"></AuthorizationCode> </GetOAuthV2Info>
Получив код авторизации, политика находит информацию о коде и заполняет набор переменных данными этого кода.
Затем вы можете получить доступ к переменным, используя JavaScript или другие средства. В следующем примере с помощью JavaScript извлекается пользовательский атрибут, связанный с кодом авторизации:
var attr = context.getVariable(‘oauthv2authcode.MyAuthCodeAttrsPolicy.custom_attribute_name’);
Обратите внимание, что для доступа к этим переменным в коде необходимо добавить префикс "oauthv2authcode". Полный список переменных, доступных через код авторизации, см. в разделе "Переменные кода авторизации ".
Токен обновления
Чтобы получить атрибуты токена обновления, используйте элемент <RefreshToken> в вашей политике.
В следующем примере предполагается, что токен доступа будет найден в параметре запроса с именем "refresh_token" (фактические детали реализации остаются на ваше усмотрение):
<GetOAuthV2Info name="MyRefreshTokenAttrsPolicy"> <RefreshToken ref="request.queryparam.refresh_token"/> </GetOAuthV2Info>
Получив токен обновления, политика находит информацию о нем и заполняет набор переменных данными из токена обновления.
Затем вы можете получить доступ к этим переменным с помощью JavaScript или другими способами. В следующем примере с помощью JavaScript извлекается пользовательский атрибут, связанный с токеном обновления:
var attr = context.getVariable(‘oauthv2refreshtoken.MyRefreshTokenAttrsPolicy.accesstoken.custom_attribute_name’);
Обратите внимание, что для доступа к переменным в коде необходимо добавить префикс "oauthv2refreshtoken". Полный список переменных, доступных через токен обновления, см. в разделе «Переменные токена обновления» .
Статический
В некоторых редких случаях может потребоваться получить профиль статически сконфигурированного токена (недоступного через переменную). Это можно сделать, указав значение токена доступа в качестве элемента.
<GetOAuthV2Info name="GetTokenAttributes"> <AccessToken>shTUmeI1geSKin0TODcGLXBNe9vp</AccessToken> </GetOAuthV2Info>
Это можно сделать и со всеми другими типами токенов (идентификатор клиента, код авторизации и токены обновления).
Идентификатор клиента
В этом примере показано, как получить информацию о клиентском приложении, используя идентификатор клиента. При выполнении политика заполняет набор переменных информацией о клиенте. В данном случае политика ожидает найти идентификатор клиента в параметре запроса с именем client_id . Имея идентификатор клиента, политика ищет профиль клиента и заполняет набор переменных данными профиля. Переменные будут иметь префикс oauthv2client.
<GetOAuthV2Info name="GetClientAttributes"> <ClientId ref="request.queryparam.client_id"></ClientId> </GetOAuthV2Info>
Затем вы можете получить доступ к переменным, используя JavaScript или другие средства. Например, чтобы получить имя приложения разработчика и адрес электронной почты разработчика, связанные с клиентским приложением, используя JavaScript:
context.getVariable("oauthv2client.GetClientAttributes.developer.email");
context.getVariable("oauthv2client.GetClientAttributes.developer.app.name");Ссылка на элемент
В справочном документе по элементам описаны элементы и атрибуты политики GetOAuthV2Info.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="GetOAuthV2Info-1" <DisplayName>Get OAuth v2.0 Info 1</DisplayName> <AccessToken ref="variable"></AccessToken> <AuthorizationCode ref="variable"></AuthorizationCode> <ClientId ref="variable"></ClientId> <RefreshToken ref="variable"></RefreshToken> </GetOAuthV2Info>
атрибуты <GetOAuthV2Info>
<GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="Get-OAuth-v20-Info-1">
В следующей таблице описаны атрибуты, общие для всех родительских элементов политики:
| Атрибут | Описание | По умолчанию | Присутствие |
|---|---|---|---|
name | Внутреннее имя политики. Значение атрибута При необходимости используйте элемент | Н/Д | Необходимый |
continueOnError | Установите значение Установите значение | ЛОЖЬ | Необязательный |
enabled | Установите значение Установите значение | истинный | Необязательный |
async | Этот атрибут устарел. | ЛОЖЬ | Устарело |
Элемент <DisplayName>
Используйте в дополнение к атрибуту name , чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим именем на естественном языке.
<DisplayName>Policy Display Name</DisplayName>
| По умолчанию | Н/Д Если вы опустите этот элемент, будет использовано значение атрибута |
|---|---|
| Присутствие | Необязательный |
| Тип | Нить |
элемент <AccessToken>
Получает профиль для токена доступа. Вы можете передать либо переменную, содержащую строку токена доступа, либо строку токена в буквальном смысле (редкий случай). В этом примере токен доступа извлекается из параметра запроса, переданного в запросе. Используйте элемент <IgnoreAccessTokenStatus>, если хотите получить информацию об отозванном или просроченном токене.
<AccessToken ref="request.queryparam.access_token"></AccessToken>
По умолчанию: | request.formparam.access_token (значение x-www-form-urlencoded, указанное в теле запроса) |
Присутствие: | Необязательный |
| Тип: | Нить |
| Допустимые значения: | Либо переменная потока, содержащая строку токена доступа, либо строковый литерал. |
элемент <AuthorizationCode>
Получает профиль для кода авторизации. Вы можете передать либо переменную, содержащую строку кода авторизации, либо строку токена (редкий случай). В этом примере код авторизации извлекается из параметра запроса, переданного в запросе. Список переменных, заполняемых этой операцией, см. в разделе « Переменные потока ».
<AuthorizationCode ref="request.queryparam.authorization_code"></AuthorizationCode>
По умолчанию: | request.formparam.access_token (значение x-www-form-urlencoded, указанное в теле запроса) |
Присутствие: | Необязательный |
| Тип: | Нить |
| Допустимые значения: | Либо переменная потока, содержащая строку кода авторизации, либо строковый литерал. |
элемент <ClientId>
Получает информацию, относящуюся к идентификатору клиента. В этом примере идентификатор клиента извлекается из параметра запроса, переданного в запросе. Список переменных, заполняемых этой операцией, см. в разделе « Переменные потока ».
<ClientId ref="request.queryparam.client_id"></ClientId>По умолчанию: | request.formparam.access_token (значение x-www-form-urlencoded, указанное в теле запроса) |
Присутствие: | Необязательный |
| Тип: | Нить |
| Допустимые значения: | Либо переменная потока, содержащая строку кода авторизации, либо строковый литерал. |
<IgnoreAccessTokenStatus> элемент
Возвращает информацию о токене, даже если токен просрочен или отозван. Этот элемент можно использовать только с токенами доступа. Информация для других сущностей, таких как токены обновления и коды авторизации, возвращается независимо от их статуса по умолчанию.
<IgnoreAccessTokenStatus>true</IgnoreAccessTokenStatus>
По умолчанию: | ЛОЖЬ |
Присутствие: | Необязательный |
| Тип: | Логический |
| Допустимые значения: | верно или неверно |
<RefreshToken> элемент
Получает профиль для токена обновления. Вы можете передать либо переменную, содержащую строку токена обновления, либо строку токена в буквальном смысле (редкий случай). В этом примере токен обновления извлекается из параметра запроса, переданного в запросе. Список переменных, заполняемых этой операцией, см. в разделе « Переменные потока ».
<RefreshToken ref="request.queryparam.refresh_token"></RefreshToken>
По умолчанию: | request.formparam.access_token (значение x-www-form-urlencoded, указанное в теле запроса) |
Присутствие: | Необязательный |
| Тип: | Нить |
| Допустимые значения: | Либо переменная потока, содержащая строку токена обновления, либо строковый литерал. |
Переменные потока
Политика GetOAuthV2Info заполняет эти переменные и обычно используется в случаях, когда вам необходимы данные профиля, но предоставление доступа или проверка еще не произошли.
переменные идентификатора клиента
Эти переменные заполняются при установке значения элемента ClientId:
oauthv2client.{policy_name}.client_id
oauthv2client.{policy_name}.client_secret
oauthv2client.{policy_name}.redirection_uris // Note the spelling -- 'redirection_uris'
oauthv2client.{policy_name}.developer.email
oauthv2client.{policy_name}.developer.app.name
oauthv2client.{policy_name}.developer.id
oauthv2client.{policy_name}.{developer_app_custom_attribute_name}переменные токена доступа
Эти переменные заполняются при установке значения элемента AccessToken:
oauthv2accesstoken.{policy_name}.developer.id oauthv2accesstoken.{policy_name}.developer.app.name oauthv2accesstoken.{policy_name}.developer.app.id oauthv2accesstoken.{policy_name}.developer.email oauthv2accesstoken.{policy_name}.organization_name oauthv2accesstoken.{policy_name}.api_product_list oauthv2accesstoken.{policy_name}.access_token oauthv2accesstoken.{policy_name}.scope oauthv2accesstoken.{policy_name}.expires_in //in seconds oauthv2accesstoken.{policy_name}.status oauthv2accesstoken.{policy_name}.client_id oauthv2accesstoken.{policy_name}.accesstoken.{custom_attribute_name} oauthv2accesstoken.{policy_name}.refresh_token oauthv2accesstoken.{policy_name}.refresh_token_status oauthv2accesstoken.{policy_name}.refresh_token_expires_in //in seconds oauthv2accesstoken.{policy_name}.refresh_count oauthv2accesstoken.{policy_name}.refresh_token_issued_at oauthv2accesstoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED
переменные кода авторизации
Эти переменные заполняются при установке значения элемента AuthorizationCode:
oauthv2authcode.{policy_name}.code
oauthv2authcode.{policy_name}.scope
oauthv2authcode.{policy_name}.redirect_uri
oauthv2authcode.{policy_name}.client_id
oauthv2authcode.{policy_name}.{auth_code_custom_attribute_name}Переменные токена обновления
Эти переменные заполняются при установке значения элемента RefreshToken:
oauthv2refreshtoken.{policy_name}.developer.id oauthv2refreshtoken.{policy_name}.developer.app.name oauthv2refreshtoken.{policy_name}.developer.app.id oauthv2refreshtoken.{policy_name}.developer.email oauthv2refreshtoken.{policy_name}.organization_name oauthv2refreshtoken.{policy_name}.api_product_list oauthv2refreshtoken.{policy_name}.access_token oauthv2refreshtoken.{policy_name}.scope oauthv2refreshtoken.{policy_name}.expires_in //in seconds oauthv2refreshtoken.{policy_name}.status oauthv2refreshtoken.{policy_name}.client_id oauthv2refreshtoken.{policy_name}.accesstoken.{custom_attribute_name} oauthv2refreshtoken.{policy_name}.refresh_token oauthv2refreshtoken.{policy_name}.refresh_token_status oauthv2refreshtoken.{policy_name}.refresh_token_expires_in //in seconds oauthv2refreshtoken.{policy_name}.refresh_count oauthv2refreshtoken.{policy_name}.refresh_token_issued_at oauthv2refreshtoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED
Схема
Каждый тип политики определяется XML-схемой ( .xsd ). Для справки, схемы политик доступны на GitHub.
Ссылка на ошибку
В этом разделе описаны коды ошибок и сообщения об ошибках, которые возвращаются, а также переменные ошибок, которые устанавливаются Edge, когда эта политика вызывает ошибку. Эту информацию важно знать, если вы разрабатываете правила обработки ошибок. Дополнительные сведения см. в разделах Что нужно знать об ошибках политики и Обработка ошибок .
Ошибки выполнения
Эти ошибки могут возникнуть при выполнении политики. Имена ошибок, показанные ниже, представляют собой строки, которые присваиваются переменной fault.name при возникновении ошибки. Более подробную информацию см. в разделе «Переменные неисправности» ниже.
| Код неисправности | Статус HTTP | Причина |
|---|---|---|
steps.oauth.v2.access_token_expired | 500 | Срок действия маркера доступа, отправленного в политику, истек. |
steps.oauth.v2.authorization_code_expired | 500 | Срок действия кода авторизации, отправленного в политику, истек. |
steps.oauth.v2.invalid_access_token | 500 | Токен доступа, отправленный в политику, недействителен. |
steps.oauth.v2.invalid_client-invalid_client_id | 500 | Идентификатор клиента, отправленный в политику, недействителен. |
steps.oauth.v2.invalid_refresh_token | 500 | Токен обновления, отправленный в политику, недействителен. |
steps.oauth.v2.invalid_request-authorization_code_invalid | 500 | Код авторизации, отправленный в политику, недействителен. |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound | 401 | Пожалуйста, прочтите этот пост сообщества Apigee для получения информации об устранении этой ошибки. |
steps.oauth.v2.refresh_token_expired | 500 | Срок действия токена обновления, отправленного в политику, истек. |
Ошибки развертывания
Обратитесь к сообщению, отображаемому в пользовательском интерфейсе, для получения информации об ошибках развертывания.
Переменные неисправности
Эти переменные устанавливаются, когда эта политика вызывает ошибку во время выполнения.
| Переменные | Где | Пример |
|---|---|---|
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":"ClientId is Invalid", "detail":{ "errorcode":"keymanagement.service.invalid_client-invalid_client_id" } } }
Пример правила неисправности
<FaultRule name="OAuthV2 Faults">
<Step>
<Name>AM-InvalidClientIdResponse</Name>
</Step>
<Condition>(fault.name = "invalid_client-invalid_client_id")</Condition>
</FaultRule>