如何使用API网关访问安全的后端API



我创建了一个后端Spring-boot Rest API,该API部署在EC2上,该API已通过JWT进行了认证。因此,我首先卷曲以获取携带者令牌:

curl -iH "Content-Type: application/json" -X POST -d '{"username":"myusername", "password":"mypassword"}' http://123.45.6782.910:8080/login

然后进行其余的调用以访问我的REST资源

curl -H "Authorization: eyJhbGzd9.NYHXPv-vXUIoNr7qtA" http://123.45.6782.910:8080/categories/pets/

这一切都很好。

现在,我想使用API网关访问/categories/pets/资源。

我已经设置了 - 方法执行的方法请求,集成请求部分。但是,当我尝试测试设置时,我得到403。

{
  "timestamp": 1498392625274,
  "status": 403,
  "error": "Forbidden",
  "message": "Access Denied",
  "path": "/categories/pets/"
}

我认为这是预期的,因为我直接尝试在没有携带者令牌的情况下访问后端API。我想知道如何在 http://123.45.6782.910:8080/login上执行帖子以获取持票人令牌,然后打电话给 /categories/pets/

更新:根据@kahouieong的建议,我在API网关上创建了一个帖子端点/登录以获取载体令牌,当我在API网关中测试时,我将获得Authorization →Bearer eyJhbGzd9,但是当我尝试时它是从邮递员那里获得的,我的状态200可以,但 Authorization →Bearer eyJhbGzd9 doken。

content-length →0
content-type →application/json
status →200
via →1.1 swfbfbbaf3fb6c32bdccb152354539e473d.cloudfront.net (CloudFront)
x-amz-cf-id →K9V3XUxHOretrza0kCM5dk_G5eZgePrtrBziyVTxptrePD7wjsWqk-l0kCQQ==
x-amzn-requestid →5ac81024-5c27-11e7-af9a-9f3c8494c542
x-amzn-trace-id →Root=1-5953e77f-ed76d15b5bfre9374c9

您的客户端应将请求发送到/login并从响应中获取持有人令牌,然后重新使用令牌以访问您的/categories/pets/ API。工作流程应与直接击中EC2后端相同。

对于API网关上的API设置,您需要设置/login资源并指向http://123.45.6782.910:8080/login

然后,您需要设置集成响应标头映射以将Authorization标头映射回方法响应,然后API网关将通过标头到客户端。

integration.response.header.Authorization -> method.response.header.Authorization

最新更新