2009-03-10 3 views
5

Я проектирую веб-api. Мне нужно, чтобы пользователь аутентифицировал себя. Я немного сомневаюсь, чтобы пользователь пропустил их имя пользователя/пароль в открытом виде .. что-то вроде: api.mysite.com/auth.php?user=x & pass = yПроектирование веб-api: как проверить подлинность?

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

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

ответ

7

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

+0

то как использовать twitter api для обеспечения безопасности? http://apiwiki.twitter.com/REST+API+Documentation#Authentication – shergill

+0

Они используют HTTP Basic Auth, который является простым текстом, который плакат не хотел. – truppo

+0

Мне просто интересно .. если это не проблема/проблема для twitter; то это действительно такая большая сделка? – shergill

2

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

+0

Как работает twitter api: http://apiwiki.twitter.com/REST+API+Documentation#Authentication? – shergill

3

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

Лично я бы рекомендовал хотя бы прочитать о digest authentication и проанализировать, подходит ли это вам.

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

5

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

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

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

1

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

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

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

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

+0

Спасибо за ваши отзывы. Я собираюсь внедрить систему реагирования на вызовы. – shergill

0

Я нашел это отверстие article.

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

 Смежные вопросы

  • Нет связанных вопросов^_^