失效令牌 API
编辑失效令牌 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" }
最后,以下示例立即使 saml1
领域中用户 myuser
的所有访问令牌和刷新令牌失效
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]" } } ] }