tho*_*ers 7 restkit amazon-iam amazon-cognito aws-lambda
我在AWS上通过HTTP标头(没有AWS API Gateway SDK)获取Cognito用户池的API授权时遇到问题.
我的设置:
在AWS上:
在iOS客户端上
工作原理:
API方法通过无服务器正确部署.
我可以通过Postman呼叫公众(不设置使用用户池).
对于私有API方法,我可以看到Cognito用户池授权API网关管理控制台设置,包括"身份令牌源"设置为method.request.header.Authorization(默认值)所描述的在这里
在iOS上,我可以正确注册并以用户身份登录.我可以转储AWS证书的详细信息到控制台,显示AccessKey,SecretKey和SessionKey.
在iOS上,我可以通过RestKit查询公共API.
当我尝试通过Postman调用私有API方法时,我收到了身体的HTTP错误401 {"message": "Unauthorized"}.(预计没有设置任何授权.)
什么失败:
为了测试授权,在邮递员中,我试过了
SessionKey我从iOS客户端获取的AWSCredentials 作为HTTP Authorization标头 - 如此处所定义(最后一段 - "API Gateway的Cognito用户池授权者")X-Amz-Security-Token标题结果始终是401错误.
我需要设置什么作为HTTP标头,以便授权对私有API的调用?"授权"应该有效 - 也许我缺少一些角色权限?
如何更好地调试权限/授权流程?
这是获取会话的方法:
\n\nAWSCognitoIdentityUserPool *pool = [AWSCognitoIdentityUserPool CognitoIdentityUserPoolForKey:AWSCognitoUserPoolsSignInProvi\xe2\x80\x8c\xe2\x80\x8bderKey]; \nAWSCognitoIdentityUser *user = [pool currentUser]; \nAWSTask<AWSCognitoIdentityUserSession *> *task = [user getSession];\nRun Code Online (Sandbox Code Playgroud)\n\n然后,task.result.idToken.tokenString可以设置为“Authorization”标头,并且它可以工作。
感谢彼得的提示!
\n| 归档时间: |
|
| 查看次数: |
2450 次 |
| 最近记录: |