Java 处理AWS用户池+;android中的Fedration身份令牌刷新系统

Java 处理AWS用户池+;android中的Fedration身份令牌刷新系统,java,android,amazon-web-services,amazon-cognito,aws-cognito,Java,Android,Amazon Web Services,Amazon Cognito,Aws Cognito,这是一个以前可能被问过好几次的问题,但我很难提出一个问题 因此,aws cognito可以工作,因为您必须将IDToken+身份验证提供程序传递给cognito identity federation,它提供一小时内有效的临时凭证。所以一小时后发生的是,我得到了身份验证异常 现在我观察到CognitoCachingCredentialProvider在执行给定任务之前尝试刷新,比如执行lambda或生成dynamodb查询。但处理到期、拦截刷新、首先获取令牌并将其设置为credentialpro

这是一个以前可能被问过好几次的问题,但我很难提出一个问题

因此,aws cognito可以工作,因为您必须将IDToken+身份验证提供程序传递给cognito identity federation,它提供一小时内有效的临时凭证。所以一小时后发生的是,我得到了身份验证异常

现在我观察到CognitoCachingCredentialProvider在执行给定任务之前尝试刷新,比如执行lambda或生成dynamodb查询。但处理到期、拦截刷新、首先获取令牌并将其设置为credentialprovider,然后继续刷新的好方法是什么呢

可能是UserPool IDToken或Google的IDToken,我所需要知道的只是如何知道凭据是否过期,以及我需要从提供商处获取新的IDToken并在处理请求之前刷新凭据

我曾经尝试过每小时一次的任务(实际上是55分钟),但有时它不起作用,而且到目前为止也不太可靠


谢谢

要做到恰到好处有点棘手,但有两种常见的处理方法

一种方法是按照您的建议执行-跟踪代币何时出售,如果在某个到期阈值内,则刷新(例如,如果距到期时间<5分钟,则刷新)

另一种是盲目地尝试刷新,然后捕获令牌过期时抛出的异常,并在那里重新引用/重试。如果您选择此路径,请注意只重试一次,这样,如果请求不正确,您就不会向服务发送垃圾邮件