如何使用开发人员身份验证身份从Cognito获取AWS AccessToken

时间:2020-01-12 19:10:26

标签: aws-lambda amazon-cognito aws-sts

我正在使用带有Developer Authenticated Identities Authflow Setup的Cognito身份池-之所以选择此身份验证流程,是因为出于某些业务原因,我们无法使用Cognito用户池。因此,我使用具有身份验证端点的API网关自己实现了用户身份提供者服务,该端点触发了Lambda函数。

因此我通过运行生成了临时Unit: microseconds expr min lq mean median uq max neval cld mean(x) 149.412 161.4115 181.1470 180.3395 204.2910 216.656 100 a meanC(x) 394.605 400.4335 489.2311 481.6755 539.6835 1425.628 100 b AccessKey SecretKey和之后的cognitoidentity.getOpenIdTokenForDeveloperIdentity,并获得了临时AWS凭证(临时cognitoidentity.getCredentialsForIdentityAccessKey)。

现在,我想生成一个SecretKey以便在我使用IAM授权的AWS API Gateway上对我的请求进行身份验证(因此它需要AccessToken来授权请求​​)。

我的问题是-如何生成AccessToken

AuthenticationResult contents

1 个答案:

答案 0 :(得分:1)

我认为您不需要生成AccessToken。看看the API Gateway IAM Auth docs

注意:要使用其他工具或环境手动验证发送到API Gateway的请求,必须使用Signature Version 4签名过程。有关更多信息,请参阅《 API Gateway REST API参考》中的Signing Requests

通过上面的链接,您将看到:

Amazon API Gateway要求您通过签署请求对发送的每个请求进行身份验证。要签名请求,您需要计算数字签名[...]

还请看这个问题,它与上面的签名有关:Integrating an ID Pool with API Gateway

我自己还没有做过,但是如果您不得不从前端手动进行上述操作,我会感到非常惊讶。应该有一个可以用来为您处理签名的客户端,就像Postman在上面的AWS文档中的示例中所做的那样。即您向客户端提供了IAM凭据,客户端会在您提出请求时发出API请求,并使用您提供的IAM凭据自动处理签名。例如AWS Amplify seems to be able to do this for you