AWS API 网关中的 OpenID 身份验证

OpenID authentication in AWS API gateway

我使用 AWS API 网关创建了一个 API 来触发 lambda 函数。现在我想限制对此 API 的访问。我拥有一个 OpenID 连接身份提供商。

我想要求人们在访问 API 之前通过我的 OpenID 身份提供者进行身份验证。最好的方法是什么?显然,我的 API 需要一个授权人。我阅读了很多文档,从提到的内容中 here, it seems that this would be possible with amazon cognito. However, here 我只能找到一种使用 cognito 用户池的方法,而我想使用 cognito 身份池。

我想要典型的身份验证场景,例如用户调用 api,被重定向到我的 openid id 提供商,登录,然后可以访问我的 api(提供 html,所以所有这一切都将在网络浏览器中进行).

这真的可以用 cognito 实现吗,还是我需要编写一个自定义的 lambda 授权器?如果是这样,是否有关于编写使用 openid 的授权方 lambda 的文档,最好是在 .NET 中?

您正在混合使用身份验证和授权。

Cognito 的联合身份提供者:

您可以使用 OpenID 联合身份提供程序进行身份验证。

下面的文档提供了如何配置它,

https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html

一旦通过身份验证,您就可以创建一个签名的 URL 来保护您想要允许的 URL 的资产。

创建签名 URLs:

以下文档提供者介绍了如何使用 C# 创建签名 URL。

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CreateSignatureInCSharp.html

自定义授权方:

github 上的后续提交显示了 C# 自定义授权器的示例实现。

https://github.com/awslabs/aws-apigateway-lambda-authorizer-blueprints/pull/13/commits/79d75fb7c5ee4f29fa06fd2ec28c704224cf8a7a

希望对您有所帮助。