如何用邮递员测试授权的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
但是,当我将返回的Bearer令牌附加到Postman中的请求时,它不起作用。它返回以下消息:
在授权标头:“ Bearer。*
中,不是有效的键=值对(缺少等号)
这显然是因为 Bearer 位于令牌的前面,而Cognito不喜欢这种令牌(显然不再是这种情况了?https://forums.aws.amazon.com/thread.jspa?threadID=241945)。无论哪种方式,我仍然无法弄清楚。
修改
将令牌粘贴到授权中并点击预览请求后,请求标头将更新为
headers = {
'Content-Type': "application/json",
'Authorization': "Bearer eyJjdHkiOiJK...........",
'cache-control': "no-cache",
'Postman-Token': "e3d1241f-9dd6-4cca-83...."
}
我想念什么?在这里有点疯狂。谢谢