Curl php basic authorization: rest — How do I make a request using HTTP basic authentication with PHP curl?

Как сделать запрос cURL с помощью базовой аутентификации

Аутентификация базового доступа — это схема аутентификации HTTP, которая состоит в том, что клиент предоставляет имя пользователя и пароль при выполнении запроса на сервер, чтобы доказать, кем он себя выдает, чтобы получить доступ к защищенным ресурсам. Обратите внимание, что выполнение базовой аутентификации доступа с помощью cURL отличается от идеи авторизации в том смысле, что последняя выполняется сервером для определения прав доступа пользователей, т. е. происходит авторизация после аутентификации .

Краткий ответ

Чтобы выполнить аутентификацию базового доступа с помощью [.inline-code]cURL[.inline-code], вы можете использовать флаг параметра [.inline-code]-u[.inline-code] (сокращение от [.inline-code]—user[.inline-code]) следующим образом:

 $ curl -u имя пользователя:пароль url
 

Где [.inline-code]имя пользователя[.inline-code] и [.inline-code]пароль[. inline-code] разделены двоеточием ([.inline-code]:[.inline- код]).

В качестве альтернативы, если вы укажете только [.inline-code]имя пользователя[.inline-code], [.inline-code]cURL[.inline-code] запросит у вас пароль:

 $ curl -u имя пользователя url
 

[#insert-authorization]С помощью этой команды вставляется заголовок «Авторизация» под капотом[#insert-authorization]

[.inline-code]cURL[.inline-code] будет кодировать [.inline-code] username:password[.inline-code] с использованием схемы кодирования Base64URL и включите это значение в заголовок авторизации [.inline-code]Basic[.inline-code] HTTP-запроса. Например, строка [.inline-code]johndoe:password[.inline-code] будет преобразована с помощью [.inline-code]cURL[.inline-code] в следующий HTTP-заголовок:

 Авторизация: базовая am9obmRvZTpwYXNzd29yZA==
 

[#recall-syntax]Напомните себе о синтаксисе с помощью поиска команд AI[#recall-syntax]

Если вы используете Warp в качестве терминала, вы можете легко получить эту команду с помощью функции поиска команд AI Warp:

Ввод [. inline-code]базовой аутентификации curl[.inline-code] в строке поиска команды AI приводит к точному результату [.inline-code]curl -u имя пользователя:URL-пароль[.inline-code], который затем вы можете быстро вставить в свою оболочку, выполнив [.inline-code]CMD+ENTER[.inline-code].

[#escaping-special-chars]Экранирование специальных символов в [.inline-code]curl[.inline-code] (например, ваш пароль)[#escaping-special-chars]

При использовании cURL для аутентификации вы может потребоваться экранирование определенных символов в вашем имени пользователя или пароле.

Чтобы экранировать специальные символы, вы можете использовать символ обратной косой черты ([.inline-code]\[.inline-code]).

 $ curl -u johndoe:h\&llo https://example.com
 

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

 $ curl -u johndoe:'h&llo' https://example. com
 

Вот некоторые символы, которые следует экранировать:

  • Двоеточие ([.inline-code]:[.inline-code]): двоеточие используется для разделения имени пользователя и пароля; обратите внимание, что этот символ не должен существовать в вашем [.inline-code] имени пользователя[.inline-code] и должен быть экранирован, если он существует в вашем [.inline-code]пароле[.inline-code].
  • Амперсанд ([.inline-code]&[.inline-code]): амперсанд используется оболочкой для перевода процесса в фоновый режим.
  • Процент ([.inline-code]%[.inline-code]): знак процента используется для кодирования специальных символов в URL-адресах, что может привести к ошибкам кодирования.
  • Пробел: символ пробела используется оболочкой для разделения аргументов и параметров командной строки.

[#use-https]Используйте HTTPS (не HTTP) с вашими [.inline-code]curl[.inline-code] запросами[#use-https]

Вообще говоря, никогда не рекомендуется переходить ваши учетные данные в виде открытого текста по сети с использованием незащищенного протокола, такого как HTTP.

Если доступно, вы всегда должны использовать конечную точку HTTPS службы, в которой вы пытаетесь пройти аутентификацию, указав схему [.inline-code]https[.inline-code] в целевом URL-адресе следующим образом:

 $ curl -u имя пользователя:пароль https://example.com
 

Это добавит надежный уровень шифрования поверх HTTP, который гарантирует безопасность ваших учетных данных, даже если они попадут в чужие руки.

[#secure-curl-credentials]Защитите свои учетные данные [.inline-code]curl[.inline-code] в файле [.inline-code].netrc[.inline-code][#secure-curl-credentials ]

Как правило, выполнение аутентификации путем ввода учетных данных открытым текстом в командной строке представляет собой серьезную угрозу безопасности.

Причина этого заключается в том, что точно так же, как ваш браузер сохраняет выполненные вами поиски, оболочка хранит внутренний список истории всех запущенных вами команд.

Эти команды временно хранятся в оперативной памяти до тех пор, пока вы не выйдете из текущего сеанса оболочки, что приведет к физической записи списка истории на диск в файл, расположенный в вашем домашнем каталоге (например, [. inline-code]. bash_history[.inline-code] для Bash, [.inline-code].zsh_history[.inline-code] для ZSH и т. д.).

Из-за этого другие пользователи, зарегистрированные в системе, могут получить доступ к этому файлу и украсть ваши учетные данные.

Конечно, вы можете очистить определенные записи истории перед ее записью на диск с помощью команды [.inline-code]history[.inline-code]:

 $ history -d номер_записи
 

Однако лучший способ защитить свои учетные данные — получить их из файла, доступ к которому есть только у вас.

[#netrc]Файл .netrc[#netrc]

Чтобы избежать передачи ваших учетных данных открытым текстом в команду [.inline-code]cURL[.inline-code], вы можете сохранить их в файле с именем [.inline-code].netrc[.inline-code], расположенный в вашем домашнем каталоге:

 по умолчанию
 авторизоваться
 пароль 

Например:

 по умолчанию
 войти [email protected]
 пароль h4lloJ0hn
 

Затем используйте флаг параметра [. inline-code]-n[.inline-code] (сокращение от [.inline-code]—netrc[.inline-code]) для выполнения аутентификации:

 $ curl -n URL-адрес
 

Обратите внимание: если вы хотите сохранить этот файл в другом каталоге, вы можете использовать флаг параметра [.inline-code]—netrc-file[.inline-code] вместо того, чтобы указать его путь:

 $ curl -- netrc-file path/to/file url
 

По очевидным причинам безопасности этот файл должен быть доступен для чтения и записи только вам, что может быть достигнуто с помощью следующей команды [.inline-code]chmod[.inline-code]:

 $ chmod 600 ~/.netrc
 

Вы можете узнать больше об изменении прав доступа и владельца файлов в Linux, прочитав наши статьи о команде chmod и команде chown.

Как установить обычную аутентификацию в Postman для вызова REST

В предыдущих руководствах мы использовали Почтальон и научились использовать его в реальной жизни. Мы обсудили сценарий предварительного запроса и то, как мы можем динамически изменять значения переменных перед отправкой запросов. В почтальон навигации мы узнали, что нам нужна авторизация для доступа к защищенным серверам. Авторизация является наиболее важной частью при работе с защищенными серверами, что наиболее вероятно. Мы узнаем о

  • Авторизация и аутентификация
  • Авторизация и аутентификация
  • Необходимость авторизации
  • Базовая аутентификация в Postman

Вы также можете просмотреть запись Учебника Почтальона, где наши эксперты подробно объяснили концепции.
Что такое базовая аутентификация?

Базовая аутентификация в Postman: https://youtu. be/vrGRThiZ9cw

Что такое авторизация?

Значение авторизации можно рассматривать как вопрос: Имеем ли мы право на доступ к защищенному ресурсу на сервере? Если ответ да, то технически можно сказать, что мы Авторизованы для доступа к ресурсу. Если ответ «Нет», мы можем сказать, что нас нет Авторизован для доступа к ресурсу. Например, предположим, что вы добавили в свой телефон отпечатки пальцев себя и своей сестры. Вы и ваша сестра можете открыть один и тот же мобильный телефон, что означает, что только вы и ваша сестра имеете право открывать телефон и просматривать данные . Точно так же, хотя в компании или проекте может быть много API . Не обязательно, чтобы у всех был доступ ко всем API. Только авторизованные пользователи могут получить доступ к защищенным API.

Авторизация и аутентификация

Авторизация и Аутентификация — два тесно связанных термина. Эти два термина также могут поначалу сбивать с толку. В этом разделе мы устраним путаницу в отношении этих двух терминов.

Аутентификация — это процесс представления ваших учетных данных системе и проверки системой ваших учетных данных. Эти учетные данные говорят системе о том, кто вы есть. Это позволяет системе обеспечивать и подтверждать личность пользователя. Здесь системой может быть что угодно, это может быть компьютер, телефон, банк или любое физическое офисное помещение.

Принимая во внимание, что Авторизация — это процесс разрешения или запрещения кому-либо доступа к чему-либо после выполнения Аутентификации . Таким образом, с точки зрения непрофессионала Аутентификация говорит, кто вы, а Авторизация говорит, что вы можете делать .

Когда человек обращается к серверу с ключ/пароль , сервер проверяет, доступен ли человек в каталоге, а также связан ли он с тем же ключом /паролем . Если это так, вы можете идти (Аутентификация). Если у вас есть доступ к ресурсу, то вам будет предоставлен доступ к ресурсу (Авторизованный) .

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

Авторизация с помощью Postman

Проверка авторизации

В этой главе мы будем использовать конечную точку https://postman-echo.com/basic-auth

.

  1. Создайте запрос GET и введите конечную точку как https://postman-echo. com/basic-auth

Нажмите отправьте и посмотрите на ответ

Примечание : код состояния 401 , что соответствует несанкционированному доступу, а ответное сообщение говорит: Unauthorized .

Код состояния и ответ сервера указывают на то, что у нас нет прав на доступ к API , к которому мы пытаемся получить доступ ( См. Руководство по ответам , чтобы узнать больше **). Позже в этом руководстве мы попытаемся получить доступ к тому же API , используя учетные данные, которые обсуждались в предыдущем разделе.

Необходимость авторизации

В предыдущем разделе мы обсуждали, что владелец ресурса не разрешает доступ к ресурсам всем в компании. Это потому, что это может привести к возможным нарушениям безопасности. Если я позволю стажеру получить доступ к API моей базы данных, он может непреднамеренно изменить данные, и эти данные могут быть потеряны навсегда, что может дорого обойтись компании . Тому же может быть множество причин. Может быть, человек меняет данные за деньги или человек может слить данные другой компании. Авторизация играет очень важную роль в разрешении доступа и усилении безопасности. Давайте посмотрим, какие типы аутентификации нам доступны.

Базовая аутентификация доступа / Базовая аутентификация HTTP

A Базовая аутентификация доступа — самый простой и базовый доступный тип авторизации. Для проверки авторизации любого человека требуется только имя пользователя и пароль ( Вот почему мы говорим базовый доступ аутентификация ). Имя пользователя и пароль отправляются как значения заголовка в Заголовок авторизации . При использовании обычной аутентификации мы добавляем слово Basic перед вводом имени пользователя и пароля. Эти значения имени пользователя и пароля должны быть закодированы с помощью Base64, иначе сервер не сможет их распознать . Мы выполним следующие шаги, чтобы проверить, можем ли мы получить доступ к тому же API, который мы использовали выше, или нет

.

Проверка авторизации с использованием учетных данных

1.Введите конечную точку https://postman-echo.com/basic-auth в GET запрос .

  1. Перейти к Заголовки
  1. Введите следующие пары «ключ-значение» в заголовок

Авторизация:    Базовый почтальон: пароль

Примечание : мы используем имя пользователя как почтальон и пароль как пароль

  1. Нажмите Отправьте и увидите окно ответа и код состояния.

Он по-прежнему говорит 400 , Неверный запрос .( Эту часть мы уже рассмотрели в Ответы Глава  в разделе Коды состояния и их значение ). Можете ли вы догадаться, почему?*** Если вы помните, что мы узнали в предыдущем разделе, базовая аутентификация доступа требует, чтобы имя пользователя и пароль были закодированы в Base64, но здесь мы просто отправили имя пользователя и пароль в виде простого текста. В результате сервер вернул код состояния 400, Bad Request. Прежде чем мы двинемся дальше, будет полезно понять, что Base64 кодировка есть.

Что такое кодировка Base64?

Кодировка

используется при аутентификации, потому что мы не хотим, чтобы наши данные передавались напрямую по сети. Тому есть множество причин. Сетевые сканеры могут прочитать ваш запрос и получить имя пользователя и пароль, отправленные без кодирования. Кроме того, биты и байты, передаваемые напрямую, могут рассматриваться модемом или другим оборудованием в сетевой цепочке как встроенные командные биты. Например, если есть встроенная команда 0101101010 , что означает сброс модема, то при передаче мы можем захотеть получить последовательность данных 001101010 0101101010 11020. Здесь модем может интерпретировать это как команду сброса и сбросит себя . Чтобы избежать таких проблем, полезно кодировать данные.

Мы используем base64 , в частности, потому что он передает данные в текстовой форме и отправляет их в более простой форме, такой как данные формы HTML. Мы используем Base64 , особенно потому, что мы можем полагаться на одни и те же 64 символа в любом используемом языке кодирования. Хотя мы также можем использовать методы более высокого базового кодирования, но их очень сложно преобразовать и передать, что приводит к ненужной трате времени.

Возвращаясь к исходной проблеме отправки закодированной строки Base64 в заголовке Authorization . У нас есть два способа создать закодированную строку Base64 :

  • Через веб-сайт третьей стороны
  • Через почтальона

Мы увидим оба варианта один за другим. А пока выполните шаги для доступа к API путем декодирования со стороннего веб-сайта.

Аутентификация путем кодирования через сторонний веб-сайт

  1. Перейти к https://www.base64encode.org/

Примечание : Для той же цели доступны тысячи веб-сайтов. Вы можете использовать любого, просто убедитесь, что вы кодируете то же значение, что и мы. Кроме того, мы используем Microsoft Edge в качестве браузера, хотя это не должно иметь никакого значения .

  1. Вставьте в поле следующие значения

почтальон: пароль

3.Нажмите Закодируйте .

  1. Скопируйте закодированный текст.

Примечание : Не используйте пробелы между любыми двумя текстами или символами. почтальон: пароль будет кодироваться в другое значение, а 9Почтальон 0112: пароль будет закодирован в другой. Излишне говорить, что оба будут считаться неправильными. Используйте почтальон : пароль только .

  1. Зайдите в приложение почтальона и вместо почтальон: пароль вставьте закодированное значение
  1. Нажмите , отправьте и посмотрите значение в поле ответа и код состояния.

200 OK, аутентификация означает, что мы предоставили правильные учетные данные и теперь имеем право доступа к данным.

Аутентификация путем кодирования через Postman

Вместо перехода на сторонний сайт попробуем закодировать с помощью Postman.

  1. Сотрите пару ключ-значение, которую мы ввели ранее, чтобы она теперь не имела значений.
  1. Перейти на вкладку авторизация

3.Выберите Basic Auth в раскрывающемся списке Type

4.