API网关何时验证已撤销的Cognito ID令牌

时间:2017-10-02 04:11:19

标签: aws-api-gateway amazon-cognito

我正在构建一个使用Cognito进行登录/注销的无服务器反应应用程序。该应用程序调用API网关,该网关配置为使用Cognito用户池作为自定义授权程序。

我还构建了一个lambda函数来注销用户(cognitoIdentityServiceProvider.globalSignOut)。

当我登录应用程序,然后调用lambda函数执行管理员注销时,从应用程序调用受保护的API网关功能仍然有效(在Authorization标头中传递了Cognito ID令牌) ;

cognitoIdentityServiceProvider.globalSignOutcognitoIdentityServiceProvider.adminUserGlobalSignOut等管理员调用是不是实时的,还是API网关配置为仅在一小时后进行验证?

3 个答案:

答案 0 :(得分:3)

这是Cognito用户池的默认设置。访问令牌在用户进行身份验证后一小时到期。它不应该在过期后处理。

您可以使用GlobalSignOut和AdminUserGlobalSignOut API撤消所有用户令牌。用户退出后:

  • 用户的刷新令牌不能用于为用户获取新令牌。
  • 用户的访问令牌不能用于用户池服务。
  • 用户必须重新进行身份验证以获取新令牌。

应用可以使用GlobalSignOut API允许各个用户从所有设备中签名。通常,应用程序会将此选项作为选项提供,例如从所有设备注销。应用程序必须使用用户的有效,无效,已撤销的访问令牌来调用此方法。此方法不能用于允许用户注销其他用户。

管理员应用可以使用AdminUserGlobalSignOut API允许管理员从所有设备注销用户。管理员应用程序必须使用AWS开发人员凭据调用此方法,并将用户池ID和用户的用户名作为参数传递。 AdminUserGlobalSignOut API可以注销用户池中的任何用户。

请查看官方文档: - http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html

答案 1 :(得分:2)

刚刚找到了答案,遗憾的是不是我想听到的:

  

因为IdToken表示为JSON Web Key Token,所以它已签名   使用秘密或私人/公钥对,这意味着即使你   撤销IdToken,没有办法撤销分布式公共   键。而IdToken的寿命很短,它将在短期内到期   时间。

Is it possible to revoke AWS Cognito IdToken?

https://github.com/aws/aws-sdk-js/issues/1687

https://github.com/aws/amazon-cognito-identity-js/issues/21

答案 2 :(得分:2)

我在Cognito团队。 globalSignOut撤消访问令牌和刷新令牌。 id令牌是一个承载令牌,用于用户池外部的系统。 API网关仍然会接受它,但它的有效期为1小时。