答案 0 :(得分:26)
从2020年8月12日开始,AWS has announced用户池现在支持自定义令牌到期。以下是要执行的步骤:
访问令牌的有效期必须在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
答案 3 :(得分:1)
Cognito使用OAuth 2.0 Specification。为了续订过期的令牌,您将需要使用 Refresh Token 值来获取新的 Id令牌。
答案 4 :(得分:1)
我认为问题是如何获得对Cognito会话终止的详细控制。有一种方法可以做到这一点。但是首先让我们回顾一下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)
配置令牌过期
默认情况下,刷新令牌在您的应用程序用户过期30天后过期 登录到您的用户池。当您为用户群创建应用时, 您可以将应用的刷新令牌到期时间(以天为单位)设置为任意值 在1到3650之间。
目前看来,对于Web客户端,一天之内没有其他选择(非常奇怪)。
如果您使用Mobile SDK,则
Android移动SDK提供了更改最低设置的选项 ID和访问令牌的有效期,取值范围为0到 30分钟。请参阅的setRefreshThreshold()方法 适用于Android的AWS Mobile SDK中的CognitoIdentityProviderClientClientConfig API参考。