Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何修改AWS Cognito用户池的访问和标识令牌的到期时间_Amazon Web Services_Amazon Cognito_Aws Cognito - Fatal编程技术网

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

Amazon web services 如何修改AWS Cognito用户池的访问和标识令牌的到期时间,amazon-web-services,amazon-cognito,aws-cognito,Amazon Web Services,Amazon Cognito,Aws Cognito,我找不到任何文档来解释是否以及如何修改AWS Cognito用户池的访问和身份令牌的过期时间 指定默认情况下在排放后1小时到期 是否有办法修改到期时间?目前无法为您的用户池配置此选项。他们被设定为每人一小时 编辑:参见Mike的评论,这是最近添加的。Cognito使用了。为了更新过期的令牌,您需要使用刷新令牌值来获取新的Id令牌 为了在开始时获得身份验证,从用户那里收集用户id和密码并发送到Cognito 你可以拿回两个代币。一个用于“访问”API,另一个用于在访问过期时“刷新” 您不需要再次要

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

指定默认情况下在排放后1小时到期


是否有办法修改到期时间?

目前无法为您的用户池配置此选项。他们被设定为每人一小时

编辑:参见Mike的评论,这是最近添加的。

Cognito使用了。为了更新过期的令牌,您需要使用刷新令牌值来获取新的Id令牌

  • 为了在开始时获得身份验证,从用户那里收集用户id和密码并发送到Cognito
  • 你可以拿回两个代币。一个用于“访问”API,另一个用于在访问过期时“刷新”
  • 您不需要再次要求用户输入用户id和密码;您只需要使用“刷新”标记
  • 您不需要存储密码的明文(这将产生安全风险),因为“刷新”令牌将为您获得一个新的访问令牌

  • 这真的很简单。澄清中的进一步信息:此回复是关于访问令牌(不是刷新令牌)

    您可以从cognito控制台
    常规设置
    /
    应用程序客户端
    /
    {your App}
    /
    显示详细信息
    /
    刷新令牌过期(天)

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

    似乎目前对于web客户端来说,不到一天的时间是没有选择的(很奇怪)

    如果您使用移动SDK,那么

    Android移动SDK提供了更改最小值的选项 将ID和访问令牌的有效期设置为介于0和 30分钟。请参阅的setRefreshThreshold()方法 AWS Mobile SDK for Android中的CognitoIdentityProviderClientConfig API参考


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

  • 身份验证令牌在一小时后过期
  • 在发布刷新令牌时,可能会请求新的身份验证令牌
  • 1到30天后,Cognito将不会发出刷新令牌-在应用程序客户端设置中,每个应用程序配置的天数
  • 那么,如何更好地控制Cognito会话长度呢?答案是在http请求堆栈中插入一个过滤器来评估请求-如果用户出于任何原因必须注销,则发出302重定向到Cognito注销端点(并清除会话cookie)

    这就是我们在Kubernetes中使用特使(使用代理)和Spring所做的。它还允许您连接逻辑,在用户的1小时访问令牌到期之前立即撤销对用户的访问

    请参见截至2020年8月12日,用户池现在支持自定义令牌到期。以下是要遵循的步骤:

  • 打开AWS Cognito控制台
  • 转到
    常规设置
  • 向下滚动至
    应用程序客户端
    ,然后单击编辑
  • 单击“显示详细信息”按钮查看如下自定义选项:
  • 访问令牌过期时间必须介于5分钟和1天之间。不能大于刷新令牌到期时间


    有关AWS cognito的更多详细信息,请遵循此操作。

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

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

    一年半后,我想知道身份证和访问令牌的到期日是否有任何变化?我似乎找不到对文档的任何更改,但我想我应该在这里问一下,然后继续。是的,这是一个我很想测试的功能。目前很难测试注销/令牌过期情况。如果我有一个刷新令牌,如果我的令牌在1小时内过期,我如何获得令牌?@Jeff Bailey让Cognito团队考虑SPA应用程序,对于哪些刷新令牌不能安全地存储在浏览器中长达1小时,并且访问令牌过期1小时,这通常会给用户带来不便?许多SPA开发者非常希望能够安全地将用户身份验证保持一个多小时。更新2020/08:您现在可以编辑cognito用户池的访问、id和刷新令牌的生命周期。问题是关于访问令牌,而不是刷新令牌。@尼尔回顾“刷新阈值”的功能,它实际上似乎是令牌过期的宽大因素,而不是寿命本身。查看CognitoIdentityProviderClientConfig.java,您会发现该值必须介于最小值(0ms)和最大值(1800000ms或30min)之间,默认值为30000ms或5min。我观察到,直到5分钟过去,SDK(或服务器API)中的id令牌才开始被拒绝,这可能就是阈值。但它似乎与本次讨论无关,除非您看的是60到90分钟。我的用例是,我们已经配置了Cognito用户池,将身份验证与我公司的SAML提供商联合,并通过SSO进行登录。现在,当用户在公司的用户管理解决方案中更改其组成员身份时,我们如何确保这会影响用户使用web应用程序的能力,因为Cognoto令牌不会从公司的用户管理解决方案中刷新。我们正在考虑使用注销按钮来实现这一点。