我们在aws上的EC2实例上运行了一个Web服务api。我们希望从我们管理的外部应用程序连接到它,例如iphone app,不同服务器上的其他前端应用程序。我无法理解如何验证这些。我是否将IP添加到EC2安全组或IAM?然后在发出JSON请求时,我是否需要发送AWS访问密钥?这些是在标题中发送的吗?所以说一个样本调用将是:
API.post(“http://awsserver.com/app_api/v1/request”,查询:{ customer_name:“John Doe”,customer_email:“test@test.com”},标题: {“AWS_ACCESS_KEY_ID”=>“exampletoken”,“AWS_SECRET_KEY”=> “secretexample”})
我试过搜索,但令人惊讶的是没有发现很多。任何帮助都会很棒,谢谢。
答案 0 :(得分:0)
首先,不要以纯文本形式发送任何POST的访问密钥和密码。访问密钥和密钥用于生成唯一的令牌,这些令牌将在您的帐户级别访问AWS资源,而不是您的应用程序(API)。
我正在做很多假设,但如果您打算从移动设备访问此API,则需要在您的应用程序级别完成身份验证,因为他们将更改IP。
查看OAuth,其中设备从您的应用程序中的某些身份验证机制请求访问权限,该机制将返回您可以在标头中的后续POST请求中发送的令牌。
对于访问API的服务器,您当然可以将这些EC2实例IP添加到打开API服务器访问权限的安全组中,并拒绝所有其他IP访问,但请记住,如果EC2实例没有弹性IP,那么在任何重启时它们将具有不同的IP,需要添加到您的安全组中。