在方法请求中使用 AWS_IAM 授权时是否需要 AWS Gateway 自定义授权方?

AWS Gateway custom authorizer necessary when using AWS_IAM authorization in Method Request?

我使用 AWS Gateway 作为我的 Web API,使用 AWS Lambda 作为我的无服务器后端。 Lambda 函数仅由我的网关 API 调用。通过 Lambda,我在其他 AWS 服务(RDS、SNS 等)上调用和执行操作。 我只希望我的客户可以访问我的网站 APIs。为此,我使用 AWS_IAM 授权设置了我所有的网关 API。未经身份验证的客户端只有允许他调用的策略,例如该函数为login/sign注册了一个用户。相比之下,经过身份验证的客户端具有使他能够访问更多资源的策略。

现在的问题是:因为我只希望我的客户能够访问我的网关 APIs 并尽可能安全地进行访问,是否有必要创建一个自定义授权方来检查代币?

我既没有设置 Cognito 用户池,也没有设置外部 public 提供商(google、Facebook、openId、亚马逊等)。我正在使用自定义开发人员身份验证身份。所有用户都保存在 AWS RDS 中。当用户尝试登录并通过他的电子邮件和密码获得正确的身份验证时,一个开放的 ID 和一个 jwt 令牌将返回给客户端。这是通过调用 'getOpenIdTokenForDeveloperIdentity'.

来完成的

我在网上发现了一些人们创建自定义授权方的资源,但他们确实总是通过外部提供商(google、facebook、auth0 等)验证令牌的有效性。该成员确实写道,当您拥有“[...]一些完全不同的身份验证逻辑[...]”时,您只需要有一个外部提供者。我不认为这里是这种情况。

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

如果所有的API都有AWS_IAM授权,那就已经很安全了。 AWS_IAM 要求客户端具有来自与 API(您的账户)相同账户的有效 AWS 凭证。

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