撤消令牌
您可以使用 Amazon API 为用户撤消刷新令牌。撤消刷新令牌后,先前由该刷新令牌颁发的所有访问令牌都将无效。向用户颁发的其他刷新令牌不受影响。
JWT 令牌是独立的,具有在创建令牌时分配的签名和过期时间。已撤消令牌无法与任何需要令牌的 Amazon Cognito API 调用一起使用。但是,如果使用任何验证令牌签名和过期的 JWT 库进行验证,已撤消令牌仍然有效。
您可以在已启用令牌撤消的情况下撤消用户池客户端的刷新令牌。当您创建新的用户池客户端时,默认会启用令牌撤消。
启用令牌撤消
在您为现有的用户池客户端撤消令牌前,必须启用令牌撤销。您可以使用 Amazon CLI 或 Amazon API 为现有用户池客户端启用令牌撤销。为此,请调用 aws cognito-idp
describe-user-pool-client
CLI 命令或 DescribeUserPoolClient
API 操作以从应用程序客户端检索当前设置。然后调用 aws
cognito-idp update-user-pool-client
CLI 命令或 UpdateUserPoolClient
API 操作。包括来自您的应用客户端的当前设置并将 EnableTokenRevocation
参数设置为 true
。
当您使用Amazon Web Services Management Console、Amazon CLI 或 Amazon API 创建新的用户池客户端时,默认会启用令牌撤消。
启用令牌撤消后,Amazon Cognito JSON Web 令牌中会添加新的声明。origin_jti
和 jti
声明已添加到访问和 ID 令牌中。这些声明增加应用程序客户端访问和 ID 令牌的大小。
以下 JSON 示例显示请求使用 CreateUserPoolClient
API 来启用令牌撤消。
{ "AccessTokenValidity":
123
, "AllowedOAuthFlows": [ "string
" ], "AllowedOAuthFlowsUserPoolClient":true
, "AllowedOAuthScopes": [ "string
" ], "AnalyticsConfiguration": { "ApplicationArn": "string
", "ApplicationId": "string
", "ExternalId": "string
", "RoleArn": "string
", "UserDataShared":false
}, "CallbackURLs": [ "string
" ], "ClientName": "string
", "DefaultRedirectURI": "string
", "ExplicitAuthFlows": [ "string
" ], "GenerateSecret":true
, "IdTokenValidity":123
, "LogoutURLs": [ "string
" ], "PreventUserExistenceErrors": "string
", "ReadAttributes": [ "string
" ], "RefreshTokenValidity":456
, "SupportedIdentityProviders": [ "string
" ], "TokenValidityUnits": { "AccessToken": "string
", "IdToken": "string
", "RefreshToken": "string
" }, "UserPoolId": "string
", "WriteAttributes": [ "string
" ], "EnableTokenRevocation":true
}
撤消令牌
您可以使用 RevokeToken
API 操作来撤消刷新令牌。您也可以使用 aws
cognito-idp revoke-token
CLI 命令来撤消令牌。最后,您还可以使用撤消端点来撤消令牌。此端点在您将域添加到用户池后可用。您可以在 Amazon Cognito 托管域或您的自定义域上使用撤消端点。
要撤消刷新令牌,您必须使用与获取令牌所用的相同客户端 ID。