如何使用 AWS Cognito 从移动设备向 AWS 服务(即 CloudSearch)发出经过身份验证的请求?
How can one make authenticated requests with AWS Cognito from mobile to AWS services (i.e. CloudSearch)?
我在过去一两天阅读了一堆 AWS 文档,但还没有遇到任何真正回答以下问题的内容:
如果移动应用程序使用 AWS Cognito 作为身份验证/身份提供商,我知道我们可以编写 AWS IAM 策略来指定用户可以执行哪些 AWS 资源和操作。有几个简短的策略示例允许用户将文件直接上传到 S3,但只能上传到以其用户身份命名的 "folders"。有很多人提到能够使用策略来控制对各种 AWS 资源(包括 CloudSearch)的访问。
我的主要问题是:如何从移动客户端向 AWS 服务发出请求,以便它们具有使这些策略生效所必需的用户上下文(令牌或 w/e)? AWS 移动 SDK 可能有助于解决此问题,但在这种情况下,如何向 AWS 移动 SDK 中未包含的资源(如 CloudSearch)发出请求? CloudSearch 查询通过 REST Api 公开自己,那么在这种情况下,移动客户端将如何提供策略生效所必需的用户上下文?
对 AWS API 的请求通过凭据进行身份验证。对于几乎所有服务,这种身份验证都是通过 signature version 4 进行的,它使用请求的有效负载的 HMAC,该请求的有效负载是用凭据的 访问密钥 部分签名的。
对于作为 Amazon Cognito authflow 的一部分出售的凭据,还包含一个 sessionKey,其中包含有关登录用户的上下文信息。评估与这些凭据关联的策略时,可以替换变量使用这些上下文值(例如 cognito-identity.amazonaws.com:sub 作为身份 ID)来确定凭据是否具有指定的访问权限。
我在过去一两天阅读了一堆 AWS 文档,但还没有遇到任何真正回答以下问题的内容:
如果移动应用程序使用 AWS Cognito 作为身份验证/身份提供商,我知道我们可以编写 AWS IAM 策略来指定用户可以执行哪些 AWS 资源和操作。有几个简短的策略示例允许用户将文件直接上传到 S3,但只能上传到以其用户身份命名的 "folders"。有很多人提到能够使用策略来控制对各种 AWS 资源(包括 CloudSearch)的访问。
我的主要问题是:如何从移动客户端向 AWS 服务发出请求,以便它们具有使这些策略生效所必需的用户上下文(令牌或 w/e)? AWS 移动 SDK 可能有助于解决此问题,但在这种情况下,如何向 AWS 移动 SDK 中未包含的资源(如 CloudSearch)发出请求? CloudSearch 查询通过 REST Api 公开自己,那么在这种情况下,移动客户端将如何提供策略生效所必需的用户上下文?
对 AWS API 的请求通过凭据进行身份验证。对于几乎所有服务,这种身份验证都是通过 signature version 4 进行的,它使用请求的有效负载的 HMAC,该请求的有效负载是用凭据的 访问密钥 部分签名的。
对于作为 Amazon Cognito authflow 的一部分出售的凭据,还包含一个 sessionKey,其中包含有关登录用户的上下文信息。评估与这些凭据关联的策略时,可以替换变量使用这些上下文值(例如 cognito-identity.amazonaws.com:sub 作为身份 ID)来确定凭据是否具有指定的访问权限。