【发布时间】:2017-07-31 11:20:55
【问题描述】:
【问题讨论】:
-
有一种方法可以使用 CloudFormation 来配置 Expiration Time,答案如下(仍在本页底部):stackoverflow.com/a/64242923/1115187
标签: amazon-web-services amazon-cognito aws-cognito
【问题讨论】:
标签: amazon-web-services amazon-cognito aws-cognito
截至 2020 年 8 月 12 日,AWS has announced 用户池现在支持自定义令牌过期时间。以下是要遵循的步骤:
访问令牌的过期时间必须在 5 分钟到 1 天之间。不能大于刷新令牌过期时间。
有关 AWS cognito 的更多详细信息,您可以关注此link。
【讨论】:
目前无法为您的用户池进行配置。每个人都设置为一小时。
编辑:查看 Mike 的评论,这是最近添加的。
【讨论】:
我认为问题是如何获得对 Cognito 会话终止的精细控制。有一种方法可以做到这一点。但首先让我们回顾一下 Cognito 会话管理的工作原理:
那么,您如何才能更好地控制 Cognito 会话长度?答案是在您的 http 请求堆栈中插入一个过滤器来评估请求 - 如果用户必须出于某种原因注销,请发出 302 重定向到 Cognito 注销端点(并清除您的会话 cookie)。
这就是我们在 Kubernetes 中使用 Envoy(使用代理)和 Spring 所做的。它还允许您连接逻辑,在用户的 1 小时访问令牌过期之前立即撤销对用户的访问。
见https://docs.aws.amazon.com/cognito/latest/developerguide/logout-endpoint.html
【讨论】:
澄清:此回复是关于访问令牌(不是刷新令牌)
您可以从 cognito 控制台 General Settings / App Clients / {your app} / Show Details / Refresh token expiration (days) 配置令牌过期时间
默认情况下,刷新令牌会在您的应用用户后 30 天过期 登录到您的用户池。当您为用户池创建应用程序时, 您可以将应用的 刷新令牌到期时间(以天为单位)设置为任何值 介于 1 到 3650 之间。
目前对于网络客户端来说,似乎没有不到一天的选择(很奇怪)。
如果你使用 Mobile SDK 那么
适用于 Android 的 Mobile SDK 提供了更改最低要求的选项 ID 和访问令牌的有效期为 0 到 30 分钟。参见 setRefreshThreshold() 方法 适用于 Android 的 AWS 移动开发工具包中的 CognitoIdentityProviderClientConfig API 参考。
【讨论】:
如果您使用 CloudFormation 模板,请添加以下属性并以天为单位指定(尽管官方文档说它默认为小时)访问令牌应该有效的时间。这是一个访问令牌有效期为 24 天的示例。
UserPoolClient:
Type: "AWS::Cognito::UserPoolClient"
Properties:
ClientName: myuserpoolclient
GenerateSecret: true
UserPoolId: !Ref YourUserPool
AccessTokenValidity: 24
【讨论】:
Cognito 使用OAuth 2.0 Specification。为了更新过期的令牌,您需要使用 Refresh Token 值来获取新的 Id Token。
这真的很简单。更多信息在Cognito documentation to Refresh Tokens
【讨论】: