Почему PayPal использует заголовки HTTP-запросов для своей аутентификации API? - PullRequest
3 голосов
/ 02 марта 2012

Я просто читаю документацию по API Paypal, например, API адаптивных учетных записей

Мой вопрос: в чем причина / преимущество использования (пользовательских) заголовков HTTP-запросов для аутентификации вместо «обычных» переменных POST / GET (или даже COOKIE)?

В упомянутом примере PayPal использует следующие заголовки HTTP-запроса:

X-PAYPAL-SECURITY-USERID
X-PAYPAL-SECURITY-PASSWORD
X-PAYPAL-SECURITY-SIGNATURE
X-PAYPAL-APPLICATION-ID
X-PAYPAL-DEVICE-IPADDRESS
X-PAYPAL-REQUEST-DATA-FORMAT

Ответы [ 3 ]

10 голосов
/ 02 марта 2012

Зачем использовать заголовки HTTP, а не что-то в теле запроса?

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

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

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

Зачем использовать пользовательские заголовки HTTP, а не WWW-Authenticate или Cookie?

Я думаю, это просто потому, что PayPal хочет иметь более надежную схему, чем любая из них. WWW-Authenticate допускает только базовую (в открытом виде) и дайджест-аутентификацию (MD5), и с тех пор, как была написана спецификация для них, было разработано много лучших схем. Они также не допускают более имени пользователя и пароля.

Cookies - это технически непрозрачные биты данных, которые вы получаете с сервера и передаете обратно без изменений. Опять же, они могли бы рассказать вам, как генерировать информацию, которую вы передаете в заголовке Cookie, но на самом деле это не соответствовало бы спецификации, поэтому на этом этапе, почему бы просто не использовать некоторые пользовательские заголовки?

2 голосов
/ 02 марта 2012

Процесс аутентификации доступа HTTP описан в разделе «Аутентификация HTTP: базовая и дайджест-аутентификация доступа», смотрите здесь .

Пользовательским агентам рекомендуется проявлять особую осторожность при разборе значения поля WWW-Authenticate, поскольку оно может содержать более одного запроса, или если предоставляется более одного поля заголовка WWW-Authenticate, содержимое самого запроса может содержать список параметров аутентификации через запятую.

2 голосов
/ 02 марта 2012

Если соединение между двумя сторонами является доверенным и реализован SSL, HTTP Authentication - это простой способ *1002* для аутентификации между двумя фиксированными сторонами.В случае сбоя аутентификации соединение просто отклоняется на уровне трафика.

Я не думаю, что Paypal использует HTTP-аутентификацию для платежей?Вам нужен доступ к функциям API для создания собственного интерфейса администратора для учетных записей Paypal?

...