Разработка веб-API: как пройти проверку подлинности? - PullRequest
5 голосов
/ 10 марта 2009

Я разрабатываю веб-API. Мне нужно позволить пользователю аутентифицировать себя. Я немного стесняюсь, чтобы позволить пользователю передать свое имя пользователя / пароль в открытом тексте .. что-то вроде:

Другой вариант, о котором я читал, был Base64, кодирующий имя пользователя / пароль и затем отправляющий HTTP-запрос. Значит ли это, что на стороне сервера я бы _GET ['user'] и _GET ['password'] и затем каким-то образом декодировал их?

Это твиттер делает: http://apiwiki.twitter.com/REST+API+Documentation#Authentication?

Ответы [ 6 ]

7 голосов
/ 10 марта 2009

Base64 вообще не защищен. Используйте SSL для реальной безопасности.

5 голосов
/ 10 марта 2009

Как уже упоминалось в Truppo, сначала используйте SSL.

То, что делают многие веб-службы, - это служба «аутентификации», которая возвращает токен, который затем используется позже и может использоваться в виде открытого текста, поскольку он действителен только в течение ограниченного периода времени. Когда он истекает, клиент просто выполняет другую проверку подлинности.

Ключевым преимуществом этого является то, что оно уменьшает количество запросов SSL, что снижает нагрузку на сервер.

3 голосов
/ 10 марта 2009

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

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

Использование SSL также может быть вариантом. Тем не менее, он также решает дополнительные проблемы за счет производительности, кэшируемости и других. Это сохраняет данные полезной нагрузки в тайне. Если это требование, то это ваш путь.

2 голосов
/ 10 марта 2009

Если это веб-сервис, вам лучше использовать более безопасную форму аутентификации. Посмотрите, например, на протокол LiveJournal: Ответ на вызов .

1 голос
/ 10 марта 2009

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

Пожалуйста, рассмотрите возможность использования oauth http://oauth.net/ или хотя бы какой-нибудь системы, основанной на ответах на вызовы, как предложил Евгений.

Одним простым способом было бы позволить гостевой службе генерировать токен, который связан с его приложением и пользователем. Если вы добавите какую-то работу, вы даже можете сделать создание токена безопасным, чтобы разрешить сторонним сервисам только некоторые механизмы с закрытым / открытым ключом.

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

0 голосов
/ 26 октября 2012

Я нашел эту статью открывающую глаза.

Вкратце: используйте пару ключей API для каждого пользователя. Один для аутентификации клиента, другой для подписи параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...