2016-03-01 28 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

相關問題