1

我使用AWS Gateway作为我的Web API和AWS Lambda作为无后台服务器。 Lambda函数只能由我的网关API调用。通过Lambda,我致电并执行其他AWS服务(RDS,SNS等)上的操作。 我只想让我的客户访问我的Web API。为此,我使用AWS_IAM授权设置了所有网关API。未经身份验证的客户端只有一些策略可以让他调用用于登录/注册用户的功能。相比之下,经过认证的客户有一些政策可以让他获得更多的资源。在方法请求中使用AWS_IAM授权时,AWS Gateway自定义授权者是否必需?

现在的问题是:因为我只希望我的客户能够访问我的网关API并尽可能安全地进行操作,是否有必要创建一个自定义授权者来检查令牌的有效性?

我没有设置认知用户池,也没有设置外部公共提供者(谷歌,Facebook,openId,亚马逊等)。我正在使用自定义开发人员身份验证身份。所有用户都保存在AWS RDS中。当用户尝试登录并通过他的电子邮件和密码获得正确的身份验证时,会将开放标识和jwt标记返回给客户端。这是通过调用'getOpenIdTokenForDeveloperIdentity'来完成的。

我在网上发现了一些资源,人们创建了一个自定义授权者,但他们总是通过外部提供者(谷歌,脸谱,auth0等)验证令牌的有效性。该成员确实写道,只有当你有一些完全不同的认证逻辑“https://stackoverflow.com/a/39407156/5181862”时,你才需要有外部提供者。我不认为这是这种情况。

运行该应用程序的客户端是iOS和更高版本的Android设备(如果此信息是必需的)。

回答

1

如果所有API都具有AWS_IAM授权,那已经非常安全。 AWS_IAM要求客户端具有与API(您的帐户)相同的帐户的有效AWS凭证。

听起来好像您正在使用Cognito(谈论未经验证的客户端策略),在这种情况下,如果正确实施,您的授权模型是安全的。

+0

好,很高兴听到来自aws团队的消息。谢谢。我已经实施了最终解决方案,并且我正在使用AWS Cognito。我会为面临同样问题/问题的其他人更新我的答案。 – BEm