将Postman与AWS Cognito Auth结合使用

时间:2019-07-31 23:33:36

标签: authentication postman amazon-cognito aws-userpools

如何用邮递员测试授权的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...."
    }

我想念什么?在这里有点疯狂。谢谢

0 个答案:

没有答案