создать токен доступа с помощью Почтальона - PullRequest
0 голосов
/ 17 мая 2018

Я написал API, используя Django REST Frameword и Django oAuth Toolkit для аутентификации oauth2 и Postman для проверки процесса авторизации API.

Я должен отправить следующий запрос скручивания

curl -X POST -d "grant_type=password&username=<user>&password=<password>" -u "<client_id>:<client_secret" http://127.0.0.1:3333/auth/token/

Я могу сгенерировать access_token просто используя Почтальон Get Access Token Окно

enter image description here

Но я хочу сделать это, отправив запрос и передав данные с помощьюФорма запроса, чтобы я мог протестировать API, а также сгенерировать документацию для аутентификации.

Теперь я могу передать пользовательские данные (имя пользователя, пароль) в form-data, но как передать client_idи client_secret?

enter image description here

Ответы [ 2 ]

0 голосов
/ 23 июля 2019

Для полного ответа почтальона, способ сделать это с помощью сценария предварительного запроса.Идентификатор клиента и секрет клиента просто кодируются с помощью схемы кодирования base64.Просто сделайте это:

enter image description here

Обратите внимание, что client_id_client_secret является переменной среды .Если вы не хотите этого делать, то перетащите первую строку и жестко закодируйте свой идентификатор и секретный код клиента в CryptoJS.enc.Utf8.parse («my-trust-client: mysecret»), где «my-trust-client »- это идентификатор клиента, а« mysecret »- это секрет клиента.

Вот код для радости копирования / вставки.

let keys = pm.environment.get('client_id_client_secret');
let encoded = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(keys));
pm.environment.set("base64_client_id_client_secret", encoded);

Теперь создайте заголовок и включите созданную вами переменную.:

enter image description here

Ценная часть этого изображения:

Basic {{base64_client_id_client_secret}}

Сейчас ... просто почтальонское блаженство.

0 голосов
/ 17 мая 2018

curl шифрует значение параметра -u, которое мы можем увидеть, используя опцию -v (подробный).

Поэтому, чтобы получить значение авторизации заголовка, используйте -v один раз с командой curl.Он напечатает необработанный запрос следующим образом: -

$ curl -X POST -d "grant_type=password&username=<user>&password=<password>" -u "client_id:client_secret" http://127.0.0.1:3000 -v
Note: Unnecessary use of -X or --request, POST is already inferred.
* Rebuilt URL to: http://127.0.0.1:3000/
*   Trying 127.0.0.1...
* TCP_NODELAY set 
* Connected to 127.0.0.1 (127.0.0.1) port 3000 (#0)
* Server auth using Basic with user 'client_id'
> POST / HTTP/1.1
> Host: 127.0.0.1:3000
> Authorization: Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ=
> User-Agent: curl/7.54.0
> Accept: */*
> Content-Length: 55
> Content-Type: application/x-www-form-urlencoded
> 
* upload completely sent off: 55 out of 55 bytes
< HTTP/1.1 200 OK
< Content-Type: text/plain
< Date: Sat, 19 May 2018 07:09:35 GMT
< Connection: keep-alive
< Transfer-Encoding: chunked
< 

В приведенном выше подробном журнале мы можем видеть пары «Значение ключа» как

> Authorization: Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ=

После сбора этих ключей как «Авторизация»и значение как «Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ =», вы можете использовать их в заголовках запроса через почтальона.«Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ =» - это зашифрованное значение, сгенерированное с помощью опции -u «client_id: client_secret» с curl.

Надеюсь, что это решит проблему с использованием запроса почтальона.

...