如何修改AWS Cognito用户池的访问和标识令牌的到期时间

时间:2017-03-10 07:40:08

标签: amazon-web-services amazon-cognito aws-cognito

我找不到任何文档来解释是否以及如何修改AWS Cognito用户池的访问和身份令牌的到期时间。

documentation指定默认情况下在发射后1小时到期。

有没有办法修改到期时间?

6 个答案:

答案 0 :(得分:26)

从2020年8月12日开始,AWS has announced用户池现在支持自定义令牌到期。以下是要执行的步骤:

  1. 打开您的AWS Cognito控制台。
  2. 转到General Settings
  3. 向下滚动到App clients,然后单击“编辑”。
  4. 单击Show Details按钮以查看如下自定义选项: Token Expiry Customization Screen

访问令牌的有效期必须在5分钟到1天之间。不能大于刷新令牌的到期时间。

有关AWS Cognito的更多详细信息,您可以遵循此link

答案 1 :(得分:18)

目前无法为您的用户池配置。每个人都设置为一小时。

答案 2 :(得分:2)

如果您使用的是CloudFormation模板,请添加以下属性并以天为单位(尽管官方文档说它默认为小时)指定访问令牌应有效的时间。这是一个访问令牌有效期为24天的示例。

UserPoolClient:
    Type: "AWS::Cognito::UserPoolClient"
    Properties:
        ClientName: myuserpoolclient
        GenerateSecret: true
        UserPoolId: !Ref YourUserPool
        AccessTokenValidity: 24

文档: https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-AccessTokenValidity

答案 3 :(得分:1)

Cognito使用OAuth 2.0 Specification。为了续订过期的令牌,您将需要使用 Refresh Token 值来获取新的 Id令牌

  1. 要从一开始就进行身份验证,需要从用户处收集用户ID和密码,并将其发送给Cognito。
  2. 您取回两个令牌。一种用于“访问” API的方法,另一种用于在访问过期时“刷新”的方法。
  3. 您无需要求用户再次输入用户名和密码;您只需要使用“刷新”令牌即可。
  4. 您不需要存储密码的明文(这会带来安全风险),因为“刷新”令牌将为您提供一个新的访问令牌。

这真的很简单。 Cognito documentation to Refresh Tokens

中的更多信息

答案 4 :(得分:1)

我认为问题是如何获得对Cognito会话终止的详细控制。有一种方法可以做到这一点。但是首先让我们回顾一下Cognito会话管理的工作原理:

  1. Auth令牌在一小时后过期。
  2. 在发出刷新令牌后可能会请求新的身份验证令牌。
  3. 1至30天后,Cognito将不会发出刷新令牌-在“应用程序客户端设置”中为每个应用程序配置的天数。

那么您如何才能更好地控制Cognito会话长度?答案是在您的http请求堆栈中插入一个评估请求的过滤器-如果由于某种原因必须注销用户,请向Cognito注销端点发出302重定向(并清除会话cookie)。

这是我们在Kubernetes中使用Envoy(使用代理)以及Spring所做的。它还可以让您加入逻辑,以便在用户的1小时访问令牌到期之前立即撤消对用户的访问。

请参见https://docs.aws.amazon.com/cognito/latest/developerguide/logout-endpoint.html

答案 5 :(得分:0)

您可以从Cognito控制台General Settings / App Clients / {your app} / Show Details / Refresh token expiration (days)配置令牌过期

  

https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html

     

默认情况下,刷新令牌在您的应用程序用户过期30天后过期   登录到您的用户池。当您为用户群创建应用时,   您可以将应用的刷新令牌到期时间(以天为单位)设置为任意值   在1到3650之间。

目前看来,对于Web客户端,一天之内没有其他选择(非常奇怪)。

如果您使用Mobile SDK,则

  

https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html

     

Android移动SDK提供了更改最低设置的选项   ID和访问令牌的有效期,取值范围为0到   30分钟。请参阅的setRefreshThreshold()方法   适用于Android的AWS Mobile SDK中的CognitoIdentityProviderClientClientConfig   API参考。