Как получить токен без передачи имени пользователя и параметров URL?

Чтобы получить токен, я отправляю следующий запрос:

http://example.com/wordpress/wp-json/jwt-auth/v1/token?username=MYLOGIN&password=MYPASSWORD и в ответ я получаю токен - это хорошо, но... что, если я не хочу показывать имя пользователя и логин в запрошенном URL, даже один раз.

Все, кто может видеть запросы моего компьютера, могут легко перехватить мой логин и пароль. Могу ли я как-то скрыть эти конфиденциальные данные в заголовках запросов вместо параметров URL? Я использую приложение «Chrome Insomnia» для тестирования REST API, а рядом с PARAMS и HEADERS есть вкладка AUTH, где я могу ввести имя пользователя и пароль. видно легко?

Я попытался войти с помощью вкладки AUTH, но в ответ:

{
    "code": "jwt_auth_bad_auth_header",
    "message": "Authorization header malformed.",
    "data": {
        "status": 403
    }
}

Пожалуйста, не отправляйте меня обратно в документацию wp-api, потому что я не смог найти четкого ответа, прочитав там документы.


person Dariusz Sikorski    schedule 05.06.2016    source источник


Ответы (3)


Хотя я согласен, что OAuth (Really OpenID Connect) — лучшее решение, ИСПОЛЬЗУЙТЕ HTTPS.

Поскольку SSL/TLS выполняется до того, как вы сделаете запрос, он будет зашифрован по сети.

person jwilleke    schedule 05.06.2016
comment
Примечание. Хотя параметры (строка запроса) будут зашифрованы, но, вероятно, будут отображаться в журналах сервера. Чтобы избежать этого, отправьте имя пользователя и пароль в виде POST. - person zaph; 05.06.2016
comment
Принято. Мне нужно было спрятаться за HTTPS-соединением, не прилагая усилий для настройки процесса перенаправления oAuth для входа в систему. - person Dariusz Sikorski; 25.08.2016

Используйте OAuth.

Это безопасный способ авторизоваться в REST-Api без необходимости отправлять имя пользователя и пароль в виде обычного текста.

В документации WP-API есть раздел Аутентификация OAuth. . API использует OAuth 1.0. По сути, вам нужно установить OAuth-Plugin, а затем создать клиент, который автоматически получает назначенные ключ и секрет. Вы можете использовать эту пару для безопасной аутентификации.

Вы можете найти более подробную информацию по ссылке, которую я дал выше, это довольно просто реализовать.

person Bobface    schedule 05.06.2016
comment
да, у меня уже установлен плагин oAuth. Это дает новую панель для создания секрета клиента и ключа клиента. Как я должен использовать эти два, чтобы любой пользователь мог войти в систему со своим именем пользователя и паролем через запрос Http? Под клиентом я понимаю внешнее приложение, а не внешних пользователей, я думаю, я не должен публиковать эти секретные ключи для каждого пользователя. - person Dariusz Sikorski; 05.06.2016
comment
Я никогда не использовал его с wordpress, но у каждого пользователя должна быть возможность создать свой собственный клиент (когда они вошли в систему через веб-страницу), а затем использовать ключ и секрет для входа в систему. - person Bobface; 05.06.2016

Чтобы ответить на ваш первоначальный вопрос о том, как вы можете сделать так, чтобы люди не видели ваши пароли в Insomnia, рекомендуется поместить конфиденциальные данные в переменную среды и указать ее в своем запросе.

Вы можете определить свою среду JSON следующим образом...

{
  "username": "MyUsername",
  "password": "MyPassword"
}

И ссылайтесь на них на вкладке параметров (или где-либо еще), используя синтаксис шаблона Nunjucks, например {{ username }} и {{ password }}.

Вот ссылка на документы по переменным среды внутри Insomnia.

~ Грегори

person gschier    schedule 24.08.2016
comment
Вау, я не ожидал такого ответа, но это интересно. Мне нужно было скрыть учетные данные пользователя, отправленные в общедоступную сеть, а не скрывать их в остальных клиентских приложениях, но все равно спасибо. - person Dariusz Sikorski; 25.08.2016