使用从AWS cognito获取的访问令牌来保护Web API调用 - 初学者

时间:2016-07-20 09:49:39

标签: amazon-web-services amazon-cognito aws-api-gateway

最后,最困难的是,我能够让用户登录工作。我的代码如下。我也将Access Token打印到控制台。所以一切正常。

现在,我需要访问名为AWS API Gateway的{​​{1}}函数(也可以从https:// awsxxxxxxxx / save-Hospital-Information访问)。如何将我从上述步骤中获得的saveHospitalInformation发送到Access Token函数?它在标题中吗?有人能给我看一个代码示例吗?

我知道AWS API Gateway仅在1小时内有效。那么,如果它已过期,那么发送给客户端的错误消息是什么?

我是AWS和Access Tokens的新手,所以有人可以在这里指导我。

我用于用户登录的代码如下:

Access Token

2 个答案:

答案 0 :(得分:2)

对于您的具体问题缺乏示例而道歉。有很多方法可以集成这些服务,这就是为什么您可能无法找到特定用例的示例。

让我试着部分回答你的问题:

  

如何将我从上述步骤获得的访问令牌发送到   AWS API网关功能?它在标题中吗?有人能表现出来   我是一个代码示例?

您目前有两个选项:

  1. 使用Cognito Federated Identity生成AWS凭据。请参阅Cognito documentation以创建凭据提供程序,并API Gateway documentation将该凭据提供程序与生成的Javascript SDK集成。
  2. 使用API​​网关custom authorizer自行验证访问令牌。我们有example authorizers来验证Cognito生成的JWT。
  3. 在选项1中,令牌永远不会发送到API网关,只会发送到Cognito Identity。 SDK应该管理令牌的生命周期,在当前令牌到期时获取新的访问令牌。

    在选项2中,您负责将令牌传递给API。自定义授权程序当前支持使用传入请求上的标头来传递令牌,您可以在配置时定义该令牌。

      

    我知道访问令牌仅在1小时内有效。所以,如果   它已过期发送给客户端的错误消息是什么?

    这取决于您从上面选择的选项。

    在选项1中,SDK应该为您处理此问题。如果由于某种原因会话到期,您将收到一个错误,指示用户需要再次登录。

    在选项2中,如果您返回错误,目前自定义授权者将仅返回403。我们希望改善这种体验,但我不能承诺这些更新的时间表。

答案 1 :(得分:0)

最近我不得不处理OAuth2身份验证,但我不了解AWS。如果您处于相同的情况,这里是带有令牌的HTTP请求的示例:   GET /资源HTTP / 1.1   主持人:server.example.com   授权:持票人mF_9.B5f-4.1JqM

如果有帮助,请提供有关该here

的更多文档