gpt4 book ai didi

restkit - AWS API Gateway + Cognito 用户池授权方 + Lambda - 我需要设置哪些 HTTP header 和权限?

转载 作者:行者123 更新时间:2023-12-04 12:17:42 34 4
gpt4 key购买 nike

我在通过 HTTP header (没有 AWS API Gateway SDK)为 Cognito 用户池在 AWS 上授权我的 API 工作时遇到问题。

我的设置:

在 AWS 上:

  • 在 AWS Lambda 上实现的 REST API(通过 Serverless 框架部署),
  • 通过 API Gateway 使用 LAMBDA_PROXY 类型公开(无手动映射)
  • 通过提供的“Cognito 用户池授权方”对 API 网关进行授权(无“AWS_IAM”选项,无自定义编码授权方)
  • 通过 Postman 测试 API

  • 在 iOS 客户端上
  • 通过 AWS Cognito 注册/登录(从 AWS Mobile Hub 生成的演示 Xcode 项目复制的 SDK 和 UI)
  • 通过 RestKit 访问 REST API , 不是 使用 AWSAPIGateway SDK

  • 什么工作:

    API 方法通过无服务器正确部署。

    我可以通过 Postman 调用公众(未设置为使用用户池)。

    对于私有(private) API 方法,我可以看到在 API Gateway 管理控制台中设置的 Cognito 用户池授权者,包括“身份 token 源”设置为 method.request.header.Authorization (默认)如所述 here

    在 iOS 上,我可以正确注册并以用户身份登录。我可以将 AWS 凭证详细信息转储到控制台,显示 AccessKey , SecretKeySessionKey .

    在 iOS 上,我可以通过 RestKit 查询公共(public) API。

    当我尝试通过 Postman 调用私有(private) API 方法时,我得到一个带有正文 {"message": "Unauthorized"} 的 HTTP 错误 401 . (这是预期的,没有设置任何授权。)

    什么失败:

    为了测试授权,在 postman 中,我尝试过
  • 复制/粘贴 AWSCredentials 的 SessionKey我从 iOS 客户端获得 HTTP Authorization header - 定义 here (last paragraph - "API Gateway’s Authorizer for Cognito User Pools")
  • X-Amz-Security-Token标题

  • 结果总是相同的 401 错误。

    为了授权对私有(private) API 的调用,我需要设置什么作为 HTTP header ? "Authorization"应该工作 - 也许我缺少一些角色权限?

    如何更好地调试权限/授权流程?

    最佳答案

    如果您使用 Swift 3,您可以通过以下代码获取身份 token 。

            let pool = AWSCognitoUserPoolsSignInProvider.sharedInstance().getUserPool()
    let currentUser = pool.currentUser()
    let task = currentUser?.getSession()
    let identityToken = task?.result?.idToken?.tokenString
    print("identityToken: \(String(describing: identityToken))")

    关于restkit - AWS API Gateway + Cognito 用户池授权方 + Lambda - 我需要设置哪些 HTTP header 和权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41977145/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com