如果使用多个 UserPool 的 "App clients",是否需要将它们全部添加到 IdentityPool 的 "Authentication providers"?

If using multiple UserPool's "App clients", do I need to add them all to IdentityPool's "Authentication providers"?

我正在编写一个 Web 应用程序,它使用 AWS Cognito UserPools 进行用户身份验证,使用 IdentityPools 授予对 S3 存储桶的直接访问权限。

此 JavaScript 网络应用程序在与其交互的用户池中有自己的应用程序客户端 ID。

我还有一些 Lambda 函数对 UserPool 和 IdentityPool 执行一些管理功能。这些 lambda 函数有自己的 App 客户端 ID。

我过去只将一个身份验证提供程序添加到 IdentityPool,具有与 lambda 函数设置的相同的应用程序客户端 ID。

在此设置中,网络应用出现问题。我能够向 UserPool 进行身份验证,但是当身份令牌发送到 IdentityPool 时,我收到错误 "Token is not from a supported provider of this identity pool."。我相信这是因为 JWT 的 aud 参数设置为未添加到 IdentityPool

的 UserPool ID

我最终意识到,如果我向 IdentityPool 添加另一个 "Authentication provider",填写相同的 UserPool ID 和另一个 App 客户端 ID,我就可以消除错误。

我现在的问题是 - 这是正确的方法吗?我可能误解了 App client ID 的含义和用法吗?我的方法是否偏离了基础?

是的,这听起来是一个非常好的方法。如果您没有遇到任何安全或功能问题,那就是 "correct" 方法。