2017-09-14 64 views
0

我有一个Web服务,用户可以登录等等。我想设置AWS API网关以允许用户通过API与服务交互。由于用户管理/密码管理已经在系统中,我不希望用户必须转到另一个系统。授权API网关服务已存储用户凭据

我首先查看了Cognito用户池,但我无法完全自动完成用户创建/验证过程,AWS在支持服务单中表示用户需要单独验证电子邮件。然后他们建议使用Lambda函数来设置授权。

我已经创建了一个Lambda函数,并且API网关正在授权,但它看起来只有一个变量被发送用于授权,Identity token。如果我这样做了,我的Lambda函数可以从我的服务中找到该密钥是有效的,但它并不真正与用户相关联。

我所追求的是一种为用户提供来自我的系统的客户端ID和密码的方式(我可以生成所有这些),然后用户通过客户端ID向API网关端点发出请求和密钥,网关将客户端ID和密钥发送到调用我的系统进行验证的Lambda函数,Lambda返回有效的策略,然后API Gateway将请求发送到我的服务,客户端ID或其他标识符可以从政策,以便我的系统知道请求的客户端。

如果不把用户带到一个单独的系统(Cognito),实现这一目标的最佳方法是什么?

回答

2

原来你的时间可能早了一天左右。您以前在自定义授权人中遇到的问题是授权人TOKEN。今天,他们注意到使用新的REQUEST授权人类型扩展了对定制授权人的支持。新的REQUEST类型支持用于授权请求的扩展数据集,例如请求参数,标题,查询字符串等。请查看Custom authorizer types了解更多信息。

+0

等等,他们刚刚发布了我之后的功能? – Rudiger

+1

显然,就像你提问后的第二天(https://aws.amazon.com/about-aws/whats-new/2017/09/amazon-api-gateway-now-supports-enhanced-request-authorizers/) –

+0

只是测试了一下,做了一个享受,正是我所追求的。 – Rudiger