Как одобрять и отзывать токены доступа

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Как отзывать токены доступа и обновления

В некоторых случаях приложения должны явно отзывать или аннулировать токены, например когда пользователь выходит из приложения с поддержкой OAuth. Если вы отзовете токен, его можно будет повторно одобрить в любое время до истечения срока действия.

Процедура отзыва токена определена в спецификации отзыва токена OAuth 2.0.

Apigee Edge предоставляет операцию InvalidateToken, которая позволяет настроить специальную конечную точку отзыва токенов. Публикуя URI этой конечной точки, вы позволяете разработчикам приложений аннулировать токены, выданные Edge.

Ниже приведен пример конфигурации для правила OAuthV2 и операции InvalidateToken. В этом случае отзываются и токен доступа, и связанный с ним токен обновления. Технически оба сертификата отозваны, поскольку для флага каскадирования установлено значение true. Подробнее о том, как работает флаг cascade, рассказывается в разделе "Атрибуты элемента Token" ниже.

<OAuthV2 name="InvalidateToken">
  <Operation>InvalidateToken</Operation>
  <Tokens>
    <Token type="accesstoken" cascade="true">flow.variable</Token>
  </Tokens>
</OAuthV2>

Элемент <Tokens>/<Token>

Идентифицирует переменную потока, которая указывает токен, подлежащий отзыву. Если разработчики должны отправлять запрос на отзыв с помощью параметра запроса access_token, то правильная переменная потока будет выглядеть так: request.queryparam.access_token. Чтобы требовать токен в HTTP-заголовке, например, задайте значение request.header.access_token.

Атрибуты

  • type (обязательное поле, строка). Тип токена, определяемый указанной переменной. Допустимые значения: accesstoken и refreshtoken:.
    • Чтобы отозвать токен доступа, укажите тип accesstoken.
    • Чтобы отозвать и токен доступа, и токен обновления, укажите тип refreshtoken. Когда Edge видит тип refreshtoken, он считает, что токен является токеном обновления. Если токен обновления найден, он отзывается. Если токен обновления не найден, Edge проверяет, является ли токен токеном доступа. Если токен доступа существует, он отзывается.

      Примечание. Если передать уже недействительный токен правилу InvalidateToken, оно не вернет ошибку, хотя вы можете ожидать обратного. Такая операция не имеет эффекта.
  • cascade (необязательный атрибут, логическое значение, по умолчанию: true). Основное назначение этого атрибута – отозвать токен обновления, не отзывая связанный с ним токен доступа. Рассмотрим следующие случаи:
    • отозвать только токен обновления, не отзывая связанный с ним токен доступа; Для этого задайте для типа <Token> значение refreshtoken и для каскада – false.
    • Отзовите токен доступа и токен обновления. Для этого задайте для параметра <Token> тип accesstoken. Значение параметра cascade может быть true (по умолчанию) или false. Если вы зададите значение true, то будут отозваны и токен доступа, и токен обновления. Если вы зададите значение false, токен доступа будет отозван, а токен обновления станет непригодным. Подробности приведены в примечании ниже.
    • Отозвать токен доступа, не отзывая связанный с ним токен обновления. Не поддерживается. Подробности приведены в примечании ниже.

Примечание. В целях безопасности при отзыве токена доступа также отзывается связанный с ним токен обновления. Поэтому вы не можете использовать атрибут cascade, чтобы отозвать только токен доступа. Например, если вы зададите для типа <Token> значение accesstoken и установите cascade=false, то токен доступа будет отозван (как и ожидалось), но связанный с ним токен обновления станет непригодным. Его нельзя использовать для обновления отозванного токена доступа. Основной вариант использования каскадного атрибута – когда вы хотите отозвать только токен обновления. В этом случае задайте для типа <Token> значение refreshtoken, и задайте cascade=false. Токен обновления будет отозван, но связанный с ним токен доступа останется действительным (до истечения срока действия или отзыва). Подробнее на форуме сообщества…

Как одобрить токены доступа и обновления

Используйте операцию ValidateToken, чтобы повторно одобрить отозванный токен. То есть при применении этой операции статус целевого токена доступа или токена обновления меняется с "отозван" на "одобрен". Вы можете проверить любой отозванный токен, срок действия которого ещё не истек.

<OAuthV2 name="ValidateToken">
  <Operation>ValidateToken</Operation>
  <Tokens>
    <Token type="refreshtoken" cascade="true">flow.variable</Token>
  </Tokens>
</OAuthV2>

Элемент <Tokens>/<Token>

Определяет переменную потока, которая указывает на токен, который нужно проверить. Если разработчики должны отправлять запрос на проверку с помощью параметра запроса access_token, то правильная переменная потока будет выглядеть так: request.queryparam.access_token. Чтобы токен требовался в HTTP-заголовке, например, задайте значение request.header.access_token.

Атрибуты

  • type (обязательный, строка) Тип токена, определяемый указанной переменной. Допустимые значения: accesstoken и refreshtoken.
  • cascade (необязательный логический параметр). По умолчанию для этого параметра задано значение true, и проверка распространяется на связанные токены. Поэтому, если применить его к токену обновления, связанный с ним токен доступа также будет проверен. Если он применяется к токену доступа, то также проверяется связанный с ним токен обновления. Если вы зададите значение false, будет проверяться только указанный токен доступа или обновления.