2011-09-01 4 views
1

В Securing an API: SSL & HTTP Basic Authentication vs Signature HTTP Basic Authentication цитируется как адекватный способ защиты вызовов веб-сервисов REST, если вызовы REST выполняются через SSL.Служба REST через SSL и HTTP Базовая аутентификация

Но, похоже, этот метод все равно не будет работать на незащищенной клиентской странице, которая использует Ajax для совершения вызовов службе REST, которая защищена за SSL. & Basic Auth.

Я пытаюсь разработать приложение, которое выполняет сброс пароля с помощью обычного способа:

  1. пользователя вводит имя пользователя и запросы «Сброс пароля» электронная
  2. пользователя получает электронное письмо со ссылкой для сброса пароля, который включает в себя проверяемый маркер
  3. пользователь нажимает на ссылку и (после того, как маркер проверено) типы в их обновленного пароле

по определению эти страниц не требуется логин. Можно ли реализовать этот интерфейс с помощью Ajax, который вызывает службы REST для выполнения таких действий, как проверка токена, отправка электронной почты и т. Д.? Даже если эти службы REST защищены за SSL. & Базовый Auth, информация, необходимая для вызова службы (то есть «» «имя пользователя» и пароль) будет в лучшем случае в виде файлов cookie, которые будут доступны через браузер.

Я знаю, что чего-то не хватает. Я просто не знаю, что :-)

+0

Вы в конечном итоге решили это? – bryanmac

ответ

0

Я понятия не имею, что вы защищаете, поэтому я просто бросаю мысли.

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

Carby хвалит на все время FSM

+0

RAmen! Благодарю. Это низкий бар для сброса пароля. Мне кажется, что Ajax, вызывающий REST, не подходит для приложений, для которых сначала не требуется логин. – pastafarian

+0

Я не вижу проблемы с использованием AJAX для запуска сообщения электронной почты сброса-вашего-пароля-токена. Конечно, когда они нажимают ссылку в почтовой программе или браузере, она переводит их на новую страницу (или загружает страницу заново). Я полагаю, вы обеспокоены тем, что файлы cookie отправляются на неправильный сервер (плохой парень) ... вы не можете избежать этого риска без большого подъема. AJAX - это не слабость. – Ram

+0

Спасибо. Да, моя озабоченность в основном связана с «второй частью» рабочего процесса, после чего они нажимают на ссылку.Если эта часть приложения вызывает Ajax-вызовы, приложение должно пройти аутентификацию по отношению к службе REST, но как она получит информацию аутентификации (имя пользователя/пароль a.k.a. apikey/sharedsecret), не подвергая ее тому, кто смотрит в браузер? – pastafarian

1

Пока 1 - 3 случаться под SSL, данные будут безопасными по проводу на сервер (если вы доверяете сертификатную)

Во что процесс, браузер будет хранить эти учетные данные в памяти. У вас нет выбора, кроме как верить, что если пользователь будет вводить данные.

Это код веб-сайтов, который определяет, хранить ли данные в файлах cookie.

Я думаю, вы должны быть в порядке, если 1 - 3 под SSL.

+0

Спасибо. Я думаю, что отключением в моем сознании является следующее: если это будет одностраничное приложение ajax, единственными поездками на сервер будут вызывать эти службы REST. Служба REST нуждается в аутентификационной информации, чтобы доверять вызывающему приложению. Как приложение ajax может использовать/использовать информацию об аутентификации. не подвергая его воздействию браузера? Не могли бы вы просто перейти на эту страницу, посмотреть на файлы cookie, которые он установил, и поднять имя пользователя/пароль REST. Затем создайте другое приложение, которое вызывает службы REST, используя имя пользователя/пароль. – pastafarian

+0

скажем, я хочу использовать базовую схему аутентификации Amazon S3 в качестве ориентира для вызова наших служб REST через SSL с использованием базового auth: 'Авторизация:« AWS »+« »+ AWSAccessKeyID +»: «+ Base64 (HMAC-SHA1 (UTF- 8 (Дата), UTF-8 (AWSSecretAccessKey))) '... Если это приложение« 1 страница »ajax, как мы можем избежать раскрытия« AWSSecretAccessKey »миру? – pastafarian

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