如何验证AWS API Gateway的用户?

Man*_*ngh 17 aws-api-gateway

我正在使用AWS API Gateway和AWS Lambda创建一个服务器较少的REST API.虽然已创建端点并与相应的Lambda函数链接,但下一步是添加身份验证层以通过电子邮件和密码对用户进行身份验证.根据我从文档中可以理解的,API网关方法可以支持基于API密钥的访问或基于IAM的访问.但我无法理解如何使用API​​密钥安全地实现身份验证.

我是否必须创建用于进行身份验证和管理用户的服务器?有没有什么办法可以成为一个完整的服务器而不是端到端的应用程序?任何指向正确方向的资源都将受到高度赞赏.我在看这个文件的时刻

Rya*_*yan 14

API网关自定义授权者最近发布了一条公告:http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html

"您可以使用承载令牌身份验证策略(例如OAuth或SAML)来控制对API的访问.为此,您需要提供并配置自定义授权程序(您拥有的Lambda函数),以便API Gateway用于授权客户端请求配置的API"

我认为在Custom Authorizer发布之前编写的另一个好资源:https://auth0.com/docs/integrations/aws-api-gateway/part-2


das*_*sum 6

AWS API Gateway 也可以使用 API 密钥进行身份验证。请按照以下步骤操作:-

  1. 在 API Gateway 的 Resource 方法中设置所需的 API Key。
  2. 创建使用计划并添加关联的 API 阶段
  3. 创建 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);
Run Code Online (Sandbox Code Playgroud)

  • AWS 文档建议不要使用此方法来授权用户。 (7认同)
  • 有人知道*为什么*不建议用户使用 API 密钥吗? (5认同)
  • 来自https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html#api-gateway-setup-api-key-with-console“用于用户身份验证和授权,不要使用 API 密钥。使用 IAM 角色、自定义授权者或 Amazon Cognito 用户池。” (3认同)
  • @mturatti 这是一个软限制 (3认同)
  • 区域和帐户的 api 密钥有 500 个硬性限制,因此不能将其视为通用身份验证机制。https://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html (2认同)