2010-10-21 3 views
4

Я работаю над веб-сервисом REST и, в частности, методами аутентификации для запросов на основе браузера. (с использованием JsonP или кросс-доменных XHR-запросов/XDomainRequest).Аутентификация аутентификации REST на основе браузера

Я провел некоторое исследование в OAuth, а также AWS Amazon. Большие недостатки и в том, что мне нужно сделать одно из следующих действий:

  • Хранить секретные маркеры в браузере
  • Пусть серверный скрипт обработки подписи. В принципе, я бы сначала обратился к моему серверу, чтобы получить конкретный предварительно подписанный javascript-запрос, который я буду использовать для подключения к реальному серверу REST.

Какие еще варианты или предложения?

ответ

1

Ну, единственный верный ответ здесь - проксирование через сервер, использование сеансов/файлов cookie для аутентификации и, конечно же, использование SSL. Извините за ответ на мой собственный вопрос.

0

Да, проверка подлинности jsonp жесткая, потому что браузер-клиент должен знать общий секрет.

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

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

+0

Что безопасность целого? – BigJoe714

+0

извините ... поздний вечер набрав/написание, сегодня утром использовал бы термин уязвимость;) –

+0

Я подумываю о том, чтобы пойти с токеном с ограниченным временем ожидания: S – Evert

0

Я попытался нету это сам, но вы можете попробовать следующее .. (я уверен, что я буду получать обратную связь)

На стороне сервера, генерировать временную метку. Используя HMAC-SHA256, сгенерируйте ключ для этой отметки времени с использованием пароля и отправьте сгенерированный ключ и отметку времени в html.

Когда вы совершаете вызов AJAX веб-службе (при условии, что это другой сервер), отправьте ключ и отметку времени вместе с запросом. Убедитесь, что временная метка находится в пределах 5-15 минут. если это так, сделайте HMAC-SHA256 с тем же паролем и ключом, если сгенерированный ключ будет таким же. Кроме того, на стороне клиента, вы должны проверить, если ваша метка время остается в силе, прежде чем сделать звонок ..

Вы можете сгенерировать ключ, используя следующий URL .. http://buchananweb.co.uk/security01.aspx

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