如何在AWS Cognito的触发函数中获取ID令牌?

问题描述 投票:0回答:1

在 AWS Cognito 的 lambda 触发器函数中,例如

Post confirmation trigger
Post authentication trigger
,我想获取 ID 令牌,以便我可以代表用户查询一些其他服务。

这可能吗?如果可以,怎么做?

如果您还可以提供一个 Javascript 和/或 Python 的小示例,那就太好了。

javascript amazon-web-services aws-lambda jwt amazon-cognito
1个回答
0
投票

确认流程根本不生成用户令牌,身份验证流程的后触发与生成和签署令牌的过程并行触发。即使失败,它也看不到令牌,并且对令牌生成没有影响。

根据定义,ID 令牌确认您的用户的身份。这个想法是,将令牌提供给用户代理(浏览器或移动应用程序或其他),并且它作为用户代理,使用它代表用户执行任何需要完成的操作,并承担全部责任因其行动。如果令牌最终出现在错误的位置(或正确的位置),我们可以确定无论事件链导致什么,它都是从用户代理开始的。

第三方(不是用户代理)使用令牌将违反此原则。

如果您要代表用户查询的服务位于 AWS 中,您只需在触发器中承担适当的 IAM 角色并执行您需要执行的操作。

如果它们是第三方服务,您将需要生成单独的令牌。您可以通过调用

AdminInitiateAuth
来做到这一点(但是如果用户设置了 MFA,这会触发 MFA,想想看,这才是公平的),或者以其他方式验证触发器(通过使用共享密钥或这些服务提供的长期访问令牌或其他东西)

最后,您可以通过让用户代理调用 API 网关端点或其他内容并提供刚刚收到的令牌来实现此逻辑。这将需要额外的往返,这需要时间(并且可能会失败)。

同样,如果您要为用户代理生成令牌,则用户代理应该始终是第一个提供令牌的人。您的触发器是一个单独的实体,必须提供自己的凭据。

© www.soinside.com 2019 - 2024. All rights reserved.