Как я могу сгенерировать заголовок запроса авторизации?
Я прочитал о заголовке запроса авторизации, и я сгенерировал его с использованием имени пользователя и пароля в базе 64, но когда я передаю его по заголовку запроса, он не работает ("error": "invalid_client
).
Используя Postman, чтобы сделать запрос, все работает:
POST /oauth/token
content-type: application/x-www-form-urlencoded
authorization: Basic M1g4Vlk2QllHOFFJTDA3amt1cWpsUnNKOmhoWkNlSEg0SzFuVVJ2VTZmNUs5MmFiTlNSN3h3ZlBCYVN6OXI1WG1pcDNZOGJCbA==
user-agent: PostmanRuntime/7.1.5
accept: */*
host: 127.0.0.1:5000
accept-encoding: gzip, deflate
content-length: 97
Obs ¹: api использует тип разрешения пароля и возвращает токен-носитель
Obs ²: Когда я base64.b64encode(b'')
заголовок запроса авторизации, используя имя пользователя и пароль (base64.b64encode(b'')
), длина выходного base64.b64encode(b'')
составляет 20 символов
В Flask Authlib вы можете определить три типа методов Auth: client_secret_basic, client_secret_post и none, эти типы указывают параметры ведьмы и как вам нужно передавать их в заголовках. Это относится к спецификации RFC6749.
Как отправить этот запрос в python?
Почему бы не использовать requests
? Вам даже не нужно заботиться об этом:
import requests
requests.post(url, data=data, auth=(username, passwd))
requests.post('http://127.0.0.1:5000/oauth/token', data=payload, header=header).json()
, потому что помимо имени пользователя и пароля мне нужно передать client_id, client_secret, scope и grant_type , Да, я попробовал auth
но получаю ту же ошибку.
response.request
чтобы увидеть отправленный запрос и сравнить с обработанным в почтальоне. Может быть, вы можете перечислить res.request.header
res.request.body
или что-то полезное в вашем вопросе, чтобы помочь нам и себе.
b'Basic ' + base64.b64encode(b'username:pass')
?