本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
通过撤消令牌结束用户会话
您可以使用用户池API或授权服务器撤消端点撤消用户的刷新令牌。撤消刷新令牌后,先前由该刷新令牌颁发的所有访问令牌都将无效。向用户颁发的其他刷新令牌不受影响。
注意
JWT令牌是独立的,其签名和到期时间是在创建令牌时分配的。已撤销的代币不能用于任何需要令牌的 Amazon API Cognito 调用。但是,如果使用任何验证令牌签名和到期的JWT库进行验证,则已撤销的令牌仍然有效。
您可以在已启用令牌撤消的情况下撤消用户池客户端的刷新令牌。当您创建新的用户池客户端时,默认会启用令牌撤消。
启用令牌撤消
在您为现有的用户池客户端撤消令牌前,必须启用令牌撤销。您可以使用 AWS CLI
或为现有用户池客户端启用令牌撤销。 AWS API为此,请调用aws cognito-idp
describe-user-pool-client
CLI命令或DescribeUserPoolClient
API操作从您的应用程序客户端检索当前设置。然后调用aws
cognito-idp update-user-pool-client
CLI命令或UpdateUserPoolClient
API操作。包括来自您的应用客户端的当前设置并将 EnableTokenRevocation
参数设置为 true
。
当您使用 AWS Management Console、或 the 创建新的用户池客户端时 AWS CLI,默认情况下会 AWS API启用令牌撤销。
启用令牌撤销后,将在亚马逊 Co JSON gnito Web 代币中添加新的声明。origin_jti
和 jti
声明已添加到访问和 ID 令牌中。这些声明增加应用程序客户端访问和 ID 令牌的大小。
要创建或修改启用令牌撤消功能的应用程序客户端,请在CreateUserPoolClient或UpdateUserPoolClientAPI请求中包含以下参数。
"EnableTokenRevocation":
true
撤消令牌
您可以使用RevokeTokenAPI请求撤消刷新令牌,例如使用aws cognito-idp
revoke-token
CLI命令。您也可以使用撤消端点撤消令牌。此端点在您将域添加到用户池后可用。您可以在 Amazon Cognito 托管域或您的自定义域上使用撤消端点。
注意
您撤消刷新令牌的请求必须包括用于获取令牌的客户端 ID。
以下是示例RevokeToken
API请求的正文。
{ "ClientId": "
1example23456789
", "ClientSecret": "abcdef123456789ghijklexample
", "Token": "eyJjdHkiOiJKV1QiEXAMPLE
" }
以下是向具有自定义域的用户池/oauth2/revoke
终端节点发出的示例 c URL 请求。
curl --location 'auth.mydomain.com/oauth2/revoke' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Basic
Base64Encode(client_id:client_secret)
' \ --data-urlencode 'token=abcdef123456789ghijklexample
' \ --data-urlencode 'client_id=1example23456789
'
除非您的应用程序客户端具有客户端密钥,否则 RevokeToken
操作和 /oauth2/revoke
端点不需要额外授权。