Утверждение и отзыв токенов доступа

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

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

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

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

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

Ниже приведен пример конфигурации политики OAuthV2 и операции InvalidateToken. В этом случае отзываются как токен доступа, так и связанный с ним токен обновления. Технически они оба отозваны, поскольку для флага каскада установлено значение true. Дополнительные сведения о том, как работает флаг каскада, см. в разделе атрибутов элемента 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:
    • Чтобы отозвать токен доступа, укажите тип токена доступа.
    • Чтобы отозвать маркеры доступа и обновления, укажите тип RefreshToken. Когда Edge видит тип обновления токена, Edge предполагает, что это токен обновления. Если этот токен обновления найден, он отменяется. Если этот токен обновления не найден, Edge проверяет, является ли он токеном доступа. Если токен доступа существует, он отзывается.

      Примечание. Если вы передаете уже признанный недействительным токен в политику InvalidateToken, политика не возвращает ошибку, хотя вы могли бы этого ожидать. Такая операция не дает никакого эффекта.
  • cascade (необязательный, логический, по умолчанию: true) Этот атрибут в основном используется для отзыва токена обновления без отзыва связанного с ним токена доступа. Рассмотрим эти случаи:
    • Отзовите только токен обновления и не отзывайте связанный с ним токен доступа. Для этого установите для типа <Token> refreshtoken и установите для cascade значение 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 , то будет проверяться только указанный токен доступа или обновления.