Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›REST APIs ›Security APIs

API аннулирования токена

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

Запрос

DELETE /_security/oauth2/token

Описание

Токены доступа, возвращаемые API получения токена, имеют ограниченный срок действия, после которого они больше не могут использоваться. Этот срок действия определяется настройкой xpack.security.authc.token.timeout. Дополнительную информацию см. в разделе Настройки службы токенов.

Токены обновления, возвращаемые API получения токена, действительны только в течение 24 часов. Они также могут быть использованы только один раз.

Если необходимо немедленно аннулировать один или несколько токенов доступа или обновления, используйте этот API аннулирования токена.

Тело запроса

В теле запроса DELETE можно указать следующие параметры, относящиеся к аннулированию токенов:

token
(Необязательный, строка) Токен доступа. Этот параметр не может использоваться, если используются любые из refresh_token, realm_name или username.
refresh_token
(Необязательный, строка) Токен обновления. Этот параметр не может использоваться, если используются любые из refresh_token, realm_name или username.
realm_name
(Необязательный, строка) Название области аутентификации. Этот параметр не может использоваться с refresh_token или token.
username
(Необязательный, строка) Имя пользователя. Этот параметр не может использоваться с refresh_token или token.

Хотя все параметры необязательны, требуется как минимум один из них. Более конкретно, требуется один из параметров token или refresh_token. Если ни один из этих двух параметров не указан, необходимо указать realm_name и/или username.

Тело ответа

Успешный вызов возвращает JSON-структуру, содержащую количество аннулированных токенов, количество уже аннулированных токенов и, возможно, список ошибок, возникших при аннулировании определённых токенов.

Примеры

Например, если вы создаёте токен с типом client_credentials следующим образом:

POST /_security/oauth2/token
{
  "grant_type" : "client_credentials"
}

API получения токена возвращает следующую информацию о токене доступа:

{
  "access_token" : "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
  "type" : "Bearer",
  "expires_in" : 1200,
  "authentication" : {
    "username" : "test_admin",
    "roles" : [
      "superuser"
      ],
    "full_name" : null,
    "email" : null,
    "metadata" : { },
    "enabled" : true,
    "authentication_realm" : {
      "name" : "file",
      "type" : "file"
      },
    "lookup_realm" : {
      "name" : "file",
      "type" : "file"
      },
    "authentication_type" : "realm"
  }
}

Этот токен доступа теперь можно немедленно аннулировать, как показано в следующем примере:

DELETE /_security/oauth2/token
{
  "token" : "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ=="
}

Если вы использовали тип password для получения токена для пользователя, ответ также может содержать токен обновления. Например:

POST /_security/oauth2/token
{
  "grant_type" : "password",
  "username" : "test_admin",
  "password" : "x-pack-test-password"
}

API получения токена возвращает следующую информацию:

{
  "access_token" : "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
  "type" : "Bearer",
  "expires_in" : 1200,
  "refresh_token": "vLBPvmAB6KvwvJZr27cS",
  "authentication" : {
    "username" : "test_admin",
    "roles" : [
      "superuser"
      ],
    "full_name" : null,
    "email" : null,
    "metadata" : { },
    "enabled" : true,
    "authentication_realm" : {
      "name" : "file",
      "type" : "file"
      },
    "lookup_realm" : {
      "name" : "file",
      "type" : "file"
      },
    "authentication_type" : "realm"
  }
}

Токен обновления также можно немедленно аннулировать, как показано в следующем примере:

DELETE /_security/oauth2/token
{
  "refresh_token" : "vLBPvmAB6KvwvJZr27cS"
}

Следующий пример аннулирует все токены доступа и обновления для области saml1 немедленно:

DELETE /_security/oauth2/token
{
  "realm_name" : "saml1"
}

Следующий пример аннулирует все токены доступа и обновления для пользователя myuser во всех областях немедленно:

DELETE /_security/oauth2/token
{
  "username" : "myuser"
}

Наконец, следующий пример аннулирует все токены доступа и обновления для пользователя myuser в области saml1 немедленно:

DELETE /_security/oauth2/token
{
  "username" : "myuser",
  "realm_name" : "saml1"
}
{
  "invalidated_tokens":9, 
  "previously_invalidated_tokens":15, 
  "error_count":2, 
  "error_details":[ 
    {
      "type":"exception",
      "reason":"Elasticsearch exception [type=exception, reason=foo]",
      "caused_by":{
        "type":"exception",
        "reason":"Elasticsearch exception [type=illegal_argument_exception, reason=bar]"
      }
    },
    {
      "type":"exception",
      "reason":"Elasticsearch exception [type=exception, reason=boo]",
      "caused_by":{
        "type":"exception",
        "reason":"Elasticsearch exception [type=illegal_argument_exception, reason=far]"
      }
    }
  ]
}

Количество токенов, которые были аннулированы в рамках этого запроса.

Количество токенов, которые уже были аннулированы.

Количество ошибок, возникших при аннулировании токенов.

Подробная информация об этих ошибках. Это поле отсутствует в ответе, когда error_count равно 0.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/security-api-invalidate-token.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API