使用 Amplify 凭据签署 HTTP 请求 - Angular
Use Amplify credentials to sign HTTP request - Angular
我正在使用带有 Amplify (aws-amplify@3.0.11) 和 Aws Amplify Angular (aws-amplify-angular@5.0.11) 库的 Angular 应用程序.
Amplify 设置为通过 AWS API 网关与 Cognito 通信,所有授权都通过它。到目前为止一切正常,但现在我有一个特定的请求,我需要将 multipart/form-data POST 请求发送到具有特定文件的网关端点之一。
As Amplify does' t 支持发送 "multipart/form-data",我需要创建一个 HTTP 客户端请求到 API 网关(没有 Amplify),这意味着我需要对其进行签名(v4 签名)。
问题来了。我需要使用来自 Amplify 签名用户的凭据来生成签名,到目前为止这对我不起作用。有谁知道我需要传递什么标记作为 "accessKey" & "secretKey"?我无法直接从 Amplify 获取 "secretKey",但已尝试使用 "Auth.currentUserCredentials()" 确实 returns "accessKeyId" 和 "secretAccessKey".
我正在尝试使用 https://github.com/mar753/aws-signature-v4(为 Typescript 和 Angular 修改它)通过发送所需参数来签署请求。
无论我尝试哪种组合,我总是收到相同的错误消息 (403):
"message: "请求中包含的安全令牌无效。"
对于将来遇到类似问题的任何人,这是您需要的do/use:
- 使用
Auth.currentUserCredentials()
获取用户凭据
- 设置accessKey为:
user.getUserCredentials().accessKeyId
- 设置 secretAccessKey 为:
user.getUserCredentials().secretAccessKey
- 您还必须在 header 中发送安全令牌(在 Amplify 中不是这样调用的,而是“sessionToken”):
'X-Amz-Security-Token': user.getUserCredentials().sessionToken
这些是在没有 Amplify 的情况下对请求进行签名和身份验证所需的凭据,但将其用作授权处理程序。
我正在使用带有 Amplify (aws-amplify@3.0.11) 和 Aws Amplify Angular (aws-amplify-angular@5.0.11) 库的 Angular 应用程序.
Amplify 设置为通过 AWS API 网关与 Cognito 通信,所有授权都通过它。到目前为止一切正常,但现在我有一个特定的请求,我需要将 multipart/form-data POST 请求发送到具有特定文件的网关端点之一。
As Amplify does' t 支持发送 "multipart/form-data",我需要创建一个 HTTP 客户端请求到 API 网关(没有 Amplify),这意味着我需要对其进行签名(v4 签名)。
问题来了。我需要使用来自 Amplify 签名用户的凭据来生成签名,到目前为止这对我不起作用。有谁知道我需要传递什么标记作为 "accessKey" & "secretKey"?我无法直接从 Amplify 获取 "secretKey",但已尝试使用 "Auth.currentUserCredentials()" 确实 returns "accessKeyId" 和 "secretAccessKey".
我正在尝试使用 https://github.com/mar753/aws-signature-v4(为 Typescript 和 Angular 修改它)通过发送所需参数来签署请求。
无论我尝试哪种组合,我总是收到相同的错误消息 (403):
"message: "请求中包含的安全令牌无效。"
对于将来遇到类似问题的任何人,这是您需要的do/use:
- 使用
Auth.currentUserCredentials()
获取用户凭据
- 设置accessKey为:
user.getUserCredentials().accessKeyId
- 设置 secretAccessKey 为:
user.getUserCredentials().secretAccessKey
- 您还必须在 header 中发送安全令牌(在 Amplify 中不是这样调用的,而是“sessionToken”):
'X-Amz-Security-Token': user.getUserCredentials().sessionToken
这些是在没有 Amplify 的情况下对请求进行签名和身份验证所需的凭据,但将其用作授权处理程序。