我正在开发一个使用 AWS Cognito 作为身份提供程序的应用程序。因此,用户在 AWS Cognito 池上进行身份验证,并获取访问令牌、访问 ID 和刷新令牌。然后,用户可以向我的应用发出后端请求。我获得访问令牌验证它,在 Cognito AWS 上获取用户配置文件并授权请求。
问题是,在访问令牌过期后,客户端将过期的令牌发送到后端,后端应用会收到错误(令牌已体验或未授权)。
如何使此工作流程正常工作?
我正在考虑向客户端发送一条消息,表明令牌已过期,客户端将根据Cognito池刷新令牌。这是正确的方法吗?
在我的项目中,我使用AWS Amplify库,我发现这种方法有效:
配置:
import Amplify, { Auth } from "aws-amplify";
Amplify.configure({
Auth: {
userPoolId: <USER_POOL_ID>,
userPoolWebClientId: <USER_POOL_WEB_CLIENT_ID>
}
});
刷新令牌
try {
const currentUser = await Auth.currentAuthenticatedUser();
const currentSession = currentUser.signInUserSession;
currentUser.refreshSession(currentSession.refreshToken, (err, session) => {
// do something with the new session
});
} catch (e) {
// whatever
}
};
此处有更多讨论:https://github.com/aws-amplify/amplify-js/issues/2560.
您可以在此链接上找到如何使用它们的更多信息。http://docs . AWS . Amazon . com/cogn ITO/latest/developer guide/Amazon-cogn ITO-user-pools-using-tokens-with-identity-providers . html
要使用刷新令牌获取新令牌,请使用
简而言之,使用刷新令牌调用AdminLaunateAuth操作。查看您喜欢的开发语言的SDK。
当您从Cognito用户池获取Access Token、ID和刷新令牌时,您必须在本地缓存它。Access和ID令牌的有效期为1小时,应在该时间段内尽可能多地重复使用。
这些代币是 JWT 代币,并在自身中保存到期时间。您可以解码 JWT 令牌,也可以将此到期时间与令牌一起缓存。每次访问令牌的缓存时,还要根据缓存的到期时间检查当前时间。如果已过期,请使用刷新令牌获取最新的访问和 ID 令牌,并缓存令牌并再次过期。
如果您使用我们针对Android、 iOS 或JavaScript的高级SDK之一,SDK将为您管理所有这些。
问题内容: 众所周知,代理对象时,例如为Spring / EJB创建具有事务属性的Bean时,甚至当您使用某些框架创建部分模拟时,代理对象都不知道,内部调用也不会重定向,然后也没有被拦截… 这就是为什么如果您在Spring中做类似的事情: 当您致电doSomething时,您希望除了主要交易外还有3个新交易,但是实际上,由于这个问题,您只会得到一个新交易… 所以我想知道您如何处理此类问题… 实际上
问题内容: 我正在考虑将WCF用于一个项目,该项目需要人们能够将大文件(64MB-1GB)上传到我的服务器。我将如何使用WCF处理此问题,可能还具有恢复上传的功能。 为了处理更大的客户群,我想通过WCF测试JSON。这将如何影响文件上传?可以通过JSON完成,还是需要将上传部分切换到REST? 问题答案: 如果要上传大文件,则肯定需要查看WCF流模式。 基本上,您可以更改绑定上的传输模式;默认情况
冲突合并一般是因为自己的本地做的提交和服务器上的提交有差异,并且这些差异中的文件改动,Git不能自动合并,那么就需要用户手动进行合并 如我这边执行git pull origin master 如果Git能够自动合并,那么过程看起来是这样的 拉取的时候,Git自动合并,并产生了一次提交。 如果Git不能够自动合并,那么会提示 这个时候我们就可以知道README.MD有冲突,需要我们手动解决,修改RE
本文向大家介绍如何在Java中处理Selenium中的代理?,包括了如何在Java中处理Selenium中的代理?的使用技巧和注意事项,需要的朋友参考一下 我们可以借助PROXY类在Java中使用Selenium处理代理。
我们用的是Cognito。一切都很好。我使用AdminCreateUser API添加了一个用户,他们收到了临时密码。不幸的是,他们等待了一个多月才登录,现在当他们尝试使用临时密码登录时,Cognito返回以下错误: 我该怎么做呢?我在Cognito UI中没有看到任何重置按钮。是否有我可以调用的CLI或API?
问题内容: 我想实现一个基于Redis的会话存储。我想将会话数据放入Redis。但是我不知道如何处理会话过期。我可以遍历所有redis密钥(sessionid)并评估上次访问时间和最大空闲时间,因此我需要将所有密钥加载到客户端中,并且可能有1000m会话密钥,并且可能导致非常差的I / O表演。 我想让Redis管理过期,但是密钥过期时没有侦听器或回调,因此无法触发HttpSessionListe
我正在 制作一个授权系统,我遇到了这个传递 JWT 令牌的持有者方案,我阅读了 [RFC 6750][1]。我有以下疑问: 这是如何提高安全性的 在成功授权和登录后,服务器在其主体中使用JWT令牌对客户端进行响应,现在当客户端发出另一个请求时,我不清楚该怎么做,我想在请求的authorization头中从客户端发送令牌,所以现在我应该在上一次响应中从服务器收到的令牌前面加上“Bearer”前缀,如
我想在所有浏览器上自动化Web应用程序。我的代码运行正常,铬,火狐,但当我尝试它在边缘,它显示ssl证书错误。 if((browser.equalsIgnoreCase(“边缘”)){ //DesiredCapabilities=新DesiredCapabilities();//能力。setCapability(CapabilityType.PROXY,PROXY);