Как написать код, чтобы получить токен доступа AWS cognito? - PullRequest
0 голосов
/ 30 мая 2019

У меня есть запрос POSTMAN, чтобы получить токен доступа для нашей конечной точки.Почтовый запрос POSTMAN: phmo-test / auth.us-east-1.amazoncognito.com / oauth2 / token? Grant_type = client_credentials У авторизации есть идентификатор клиента и секрет клиента.И он работает отлично и возвращает мне токен доступа.Я должен преобразовать этот запрос POSTMAN в код Python.Я думал, что это просто, как написание любого другого запроса POST с использованием библиотеки REQUESTS, но, похоже, он не работает.

    base_url = 'http://phmo-test.auth.us-east-1.amazoncognito.com/oauth2/token'
    client_id=<my client ID>
    client_secret=<My client secret>
    grant_type='client_credentials'
    headers = {'Content-Type':'application/x-www-form-urlencoded',
               'cookie':'XSRF-TOKEN=27293445-d70d-4907-bfc5-62ba8a84697c'}

    response = requests.post(base_url,
                            auth={'Username':client_id, 'Password':client_secret},
                             params={'grant_type':grant_type},
                             headers = headers)
    print("WAHHHHHHHHHHHHHHHHHHH",response.status_code)

Это не возвращает мне код состояния.Что я делаю не так?

1 Ответ

0 голосов
/ 31 мая 2019

В Python есть отличная библиотека, которую вы можете использовать, чтобы просто все сделать за вас.Вы можете использовать initiate_auth из boto3, чтобы получить все токены.Вам нужно будет указать USER_PASSWORD_AUTH в authflow, идентификатор клиента и учетные данные пользователя.

ОБНОВЛЕНИЕ : Вот пример initaite_auth

logn = boto3.client('cognito-idp')
res = logn.initiate_auth(
            UserPoolId='poolid', 
            ClientId='clientid',
            AuthFlow='USER_PASSWORD_AUTH',
            AuthParameters={
                'USERNAME': username,
                'PASSWORD': password
            }
        )
print(res)

Вы должны заменить poolid, clientid, имя пользователя и пароль своими собственными значениями, и это должно работать.

...