如何使用邮递员测试我的授权 API 端点?
要求:我想以授权用户的身份访问端点,因为映射到该 http 事件的 lambda 处理程序使用 获取用户的身份event.requestContext.identity.cognitoIdentityId
,当使用我的访问密钥和密钥签署请求时,这些身份不存在。
我可以成功检索获取 ID、访问和刷新令牌
import boto3
def initAuth(username, password):
'''
Initializes a cognito user in clientId specified
'''
cog_client = boto3.client('cognito-idp')
return response = cog_client.initiate_auth(
ClientId='4sXXXXXXXXXXXXd7',
AuthFlow='USER_PASSWORD_AUTH',
AuthParameters={
'USERNAME': username,
'PASSWORD': password
})
#enddef
def getTokens(data):
tokens = data['AuthenticationResult']
return (tokens['AccessToken'], tokens['IdToken'], tokens['RefreshToken'])
#enddef
def main(username, password):
authSuccess = initAuth(username, password)
if authSuccess:
(AccessToken, IdToken, RefreshToken) = getTokens(authSuccess)
print('AccessToken:', AccessToken, '\n')`enter code here`
print('IdToken:', IdToken, '\n')
print('RefreshToken:', RefreshToken, '\n')
#enddef
但是,当我将返回的承载令牌附加到 Postman 中的请求时,它不起作用。它返回消息:
授权标头中不是有效的键=值对(缺少等号):'Bearer .*
这显然是因为Bearer预先添加到令牌中,而 Cognito 不喜欢这样(现在显然不是这种情况了?https: //forums.aws.amazon.com/thread.jspa?threadID=241945 )。无论哪种方式,我仍然无法弄清楚这一点。
编辑
在 Authorization 中粘贴令牌并点击Preview Request后,请求标头更新为
headers = {
'Content-Type': "application/json",
'Authorization': "Bearer eyJjdHkiOiJK...........",
'cache-control': "no-cache",
'Postman-Token': "e3d1241f-9dd6-4cca-83...."
}
我错过了什么?这里有点疯狂。谢谢