我使用AWS Gateway作为我的Web API,将AWS Lambda作为我的无服务器后端。 Lambda函数仅由我的Gateway API调用。通过Lambda,我可以在其他AWS服务(RDS,SNS等)上调用和执行操作。 我只希望我的客户能够访问我的Web API。为此,我使用AWS_IAM授权设置了所有Gateway API。未经身份验证的客户端只有允许他调用的策略,例如登录/注册用户的功能。相比之下,经过身份验证的客户端具有允许他访问更多资源的策略。
现在的问题是:因为我只希望我的客户能够访问我的Gateway API并尽可能安全地进行访问,是否有必要创建一个自定义授权程序来检查令牌的有效性?
我既没有设置认知用户池,也没有设置外部公共提供商(谷歌,Facebook,openId,亚马逊等)。我正在使用自定义开发人员身份验证身份。所有用户都保存在AWS RDS中。当用户尝试登录并通过他的电子邮件和密码进行正确的身份验证时,会向客户端返回一个open id和一个jwt令牌。这是通过调用'getOpenIdTokenForDeveloperIdentity'来完成的。
我在网络上找到了一些人们创建自定义授权人的资源,但他们总是通过外部提供商(google,facebook,auth0等)验证令牌的有效性。这个成员写道,当你有“[...]一些完全不同的身份验证逻辑[...]”https://stackoverflow.com/a/39407156/5181862时,你只需要一个外部提供者。我认为这不是这种情况。
如果需要此信息,运行该应用程序的客户端是iOS及更高版本的Android设备。
答案 0 :(得分:1)
如果所有API都具有AWS_IAM授权,那么这已经非常安全了。 AWS_IAM要求客户端具有与API(您的帐户)相同的帐户中的有效AWS凭据。
听起来您正在使用Cognito(谈论未经身份验证的客户端策略),在这种情况下,如果正确实施,您的授权模型是安全的。