如何使用 AWS api 网关和 Web api 实现自定义身份验证(逻辑)

How to implement custom authentication (logic) with AWS api gateway and web api

我们有一个 Web api 项目 (.net),我们计划实施 AWS API 网关来处理身份验证、缓存 e.t.c。但是我们需要限制用户的访问权限,例如从一组 ID 中,用户可以访问 ID 子集的数据。现在我们只想在 AWS 端处理身份验证,但考虑到我们手头的要求,我不确定如何实现这一点。

此外,我们有什么方法可以将 Identity Server 3 与 AWS API 网关集成以进行自定义身份验证。

P.S。 Web Api 2.2 托管在 IIS 服务器上,后端是 SQL 服务器,因此我们仅使用 AWS 和 api 网关,我们正在使用我们的基础设施进行托管。我们确实有 Identity Server 3,但它目前用作另一个应用程序的身份验证服务器。

听起来您在 API 网关中看到了自定义授权功能。如果 Identity Server 是可公开寻址的,您可以使用 Lambda 授权方函数对其进行身份验证。

假设客户端在 header 中发送一些授权令牌,您的 Lambda 函数可以获取令牌并使用身份服务器进行身份验证。然后,您应该能够将调用者的访问权限转换为 IAM 策略。

如果您的 API 资源设置如下:

/user/{id}/data

您可以通过访问特定的 id 值来构建授权方结果:

{
  "principalId": "yyyyyyyy", // The principal user identification associated with the token sent by the client.
  "policyDocument": {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Action": "execute-api:Invoke",
        "Effect": "Allow",
        "Resource": [
          "arn:aws:execute-api:<regionId>:<accountId>:<restApiId>/<stage>/<httpVerb>/user/id-1/data",
          "arn:aws:execute-api:<regionId>:<accountId>:<restApiId>/<stage>/<httpVerb>/user/id-61/data",
          "arn:aws:execute-api:<regionId>:<accountId>:<restApiId>/<stage>/<httpVerb>/user/id-4/data"
        ]
      }
    ]
  },
  "context": {
    "key": "value",
    "numKey": 1,
    "boolKey": true
  }
}