如何将 Cognito 令牌传递给亚马逊 API 网关?

How to pass Cognito token to Amazon API Gateway?

我正在开发基于 Amazon API 网关的 Web 应用程序。现在我创建了 Facebook 登录并成功登录到网站。但是当我调用另一个 API 时,一切都消失了。我认为我应该在每次调用 API 时传递 Cognito 令牌。我说得对吗?

如果是,如何将 Cognito 令牌传递给 API?喜欢 header?或者其他方式?

谢谢,

您正在使用来自 Cognito 身份的 "Basic Authflow",这意味着您将需要通过调用 STS 的 "AssumeRoleWithWebIdentity" 为您的用户获取凭据。这里有一些帮助文档:http://docs.aws.amazon.com/cognito/devguide/identity/concepts/authentication-flow/

获得凭据后,您可以实例化 API 网关客户端:

var client = apigClientFactory.newClient({ 
    accessKey: ACCESS_KEY, 
    secretKey: SECRET_KEY, 
    sessionToken: SESSION_TOKEN });

密钥和令牌来自 "AssumeRoleWithWebIdentity" 调用的结果。

如果您已正确配置 IAM 角色和授权,您应该能够访问您的 API。

这是描述如何配置角色和授权的文档:http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-method-settings.html#how-to-method-settings-callers-console

此外,这是启用 CORS 的方法 - http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html