Аутентификация REST WCF - определение веб-запроса - PullRequest
1 голос
/ 07 августа 2011

Как лучше всего определить, был ли сделан запрос в мою службу REST с веб-клиента.Я знаю, что могу посмотреть на агента пользователя, но меня беспокоит то, что его очень легко подделать.

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

Мой сайт полностью построен на HTML и Javascript, какие-либо предложения?Или в Javascript есть хороший способ сохранить скрытое имя пользователя / пароль, которые я могу использовать только для своего веб-сайта, без его отображения широкой публике?

Спасибо, Адам

Ответы [ 2 ]

0 голосов
/ 07 августа 2011

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

Это не очень хорошее предположение. По причинам, которые вы уже назвали (легко подделанный User-Agent), любой может сделать запрос в ваше приложение. Вы даже можете отключить перекрестную политику происхождения в Firefox и Chrome со стороны клиента - поэтому, даже если вы сможете проверить, что запрос поступил из браузера, все равно можно обойти ваши меры безопасности:

Отключить ту же политику происхождения в Chrome

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

  • Использовать базовую аутентификацию - если ваше приложение обменивается данными со службой WCF через HTTPS, базовая аутентификация, вероятно, является самым простым методом. См. Этот вопрос

  • Если ваш веб-сайт и служба WCF реализованы с использованием .NET, а ваше веб-приложение ASP.NET использует проверку подлинности с помощью форм, вы можете поделиться файлом cookie проверки подлинности с помощью форм и использовать его для проверки подлинности. см. Этот вопрос

0 голосов
/ 07 августа 2011

Все, что помещено в javascript, можно найти с помощью отладчика, такого как Firebug, поэтому, даже если он невидим для пользователя, он может быть найден пользователем.

Но если javascript сначала вызывает службу REST для получения зашифрованного токена, то токен, в котором зашифрована временная метка, может быть паролем, поэтому вы затем передаете имя пользователя и токен для вызова остальных ОТДЫХОВЫЕ УСЛУГИ.

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

Но это зависит от того, имеете ли вы контроль над службой REST.

...