2016-03-01 30 views
6

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

我需要创建一个服务器来进行身份验证和管理用户吗?有什么办法可以成为一个完整的服务器端到端应用程序?任何资源指向正确的方向将受到高度赞赏。我在看this document此刻

回答

7

最近宣布了API网关自定义授权人:http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html

“你可以控制访问使用承载令牌身份验证策略,比如OAuth的或SAML你的API要做到这一点,您提供和配置定制的授权,你拥有一个lambda功能,API网关使用授权已配置的API”

另一个很好的资源,我认为自定义认证器发布之前写的客户端请求:https://auth0.com/docs/integrations/aws-api-gateway/part-2

+0

但如何用OAuth,SAML或Lambda替换htaccess Basic Auth。这些方法非常复杂,难以理解和昂贵。 – Peter

1

AWS API网关也可以使用API​​密钥进行身份验证。 遵循以下步骤: -

  1. 坐落在API网关的资源方法所需的API密钥。
  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); 
+1

AWS文档建议不要使用此方法来授权用户。 – Saar

+0

从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用户池。“ – Daniel

相关问题