Политика GetOAuthV2Info

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

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

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

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

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

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

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

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

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

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

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

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

Элемент <DisplayName>

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

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

Н/Д

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

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

элемент <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

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

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

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

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

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

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

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

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

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

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

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

Элемент <DisplayName>

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

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

Н/Д

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

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

элемент <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>

Связанные темы