如何在 AWS 自定义授权方中对用户进行身份验证?

How to authenticate user in AWS Custom authorizer?

我正在尝试在 API 网关中使用 AWS 自定义授权方。如果我理解正确,那么我应该在自定义授权方中对用户进行身份验证。我不知道是谁发出的请求。我应该使用我自己的服务通过令牌检测用户。对吗?

有多个可用的授权方选项

  • IAM 授权方
  • Cognito 授权方
  • 自定义授权方

如果您使用 STS 颁发的令牌来授予对您的 AWS 资源的访问权限,那么您可以使用 IAM。

同样,Cognito 授权方将验证 Cognito Userpools id 令牌。

如果您有自己的认证方案或需要自定义认证机制,您可以使用自定义授权器。

只是想在这里加上我的 2 美分,这是流程:

  1. 一旦不记名令牌(您也可以使用 JWT)被颁发给 客户端(即移动 app/web 应用程序),客户端调用通过 API 网关创建、配置和部署的 REST API。

  2. 自定义授权器,是用Java写的lambda函数 (您可以使用 NodeJS、C#、Python 实现它),需要验证持有者令牌是否有效。在我的例子中,不记名令牌使用 SHA-512 算法进行哈希处理。所以我们基本上匹配如果令牌 存储在数据库中,客户端匹配出示的令牌。

  3. 如果令牌匹配,则自定义授权方 returns IAM 策略允许但 它令牌不正确然后它 returns IAM 策略拒绝,

API 网关根据自定义授权方的响应做出反应,如果策略允许它通过对后端的调用,否则它会 return HTTP 代码 403。

希望对您有所帮助。