我创建了一个后端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