我使用AWS API Gateway和AWS Lambda创建一个服务器较少的REST API。虽然已创建端点并与相应的Lambda函数链接,但下一步是添加身份验证层以通过电子邮件和密码对用户进行身份验证。根据我从文档中可以理解的,API网关方法可以支持基于API密钥的访问或基于IAM的访问。但我无法理解如何使用API密钥安全地实现身份验证。
我是否必须创建用于执行身份验证和管理用户的服务器?有没有什么办法可以成为一个完整的服务器而不是端到端的应用程序?任何指向正确方向的资源都将受到高度赞赏。我现在正在看this document
答案 0 :(得分:13)
最近的公告是API网关自定义授权人:http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html
“您可以使用承载令牌身份验证策略(例如OAuth或SAML)控制对API的访问。为此,您需要提供并配置自定义授权程序(您拥有的Lambda函数),以便API Gateway用于授权客户端请求配置的API“
我认为另一个很好的资源是在自定义授权程序发布之前编写的:https://auth0.com/docs/integrations/aws-api-gateway/part-2
答案 1 :(得分:3)
AWS API Gateway也可以使用API密钥进行身份验证。 请按照以下步骤操作: -
在调用API网关之后,需要传递API密钥 作为标题。
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(new MediaType[]{MediaType.APPLICATION_JSON}));
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("x-api-key", apiKey);