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

У меня есть ситуация, когда у меня есть веб-сервис, обслуживающий данные (изображения, мультимедиа и т. Д.), Которые необходимо защитить, чтобы к ним мог получить доступ только соответствующий клиент Silverlight.Их может быть много, некоторые имеют доступ к некоторым носителям, а некоторые имеют доступ к другим.

Веб-сервис существует, и в настоящее время он имеет формат .asmx, но мы собираемся обновить его до WFC.

Пока что, прочитав множество блогов по WCF и авторизации, я пришел к этой идее:

  1. У каждого клиента silverlight есть ключ клиента где-то в его конфигурации.
  2. Сервер веб-службы защищен с помощью SSL, поэтому идентификатор клиента шифруется в качестве параметра веб-службы.
  3. Аутентификация выполняется с помощью ключа клиента.
  4. Авторизация выполняется с помощью ключа клиента.

Насколько я понимаю, я думаю это должно быть безопасно, но, пожалуйста, не стесняйтесь пробивать дыры!

Единственное, что меня беспокоит, этоИз моих исследований так много пользы для использования WCF для аутентификации и авторизации, но для меня это слишком сложно для того, что мне нужно!Не говоря уже о том, как сложные файлы конфигурации клиента будут работать для приложения Silverlight, обращающегося к службе WCF.

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

Кажется ли моя идея безопасной и разумной, или мне следует продолжать обучение WFC, поскольку эта структура является лучшим решением?

Если предпочтительной является среда WCF для обеспечения безопасности, есть ли какой-либо совет высокого уровня, который вы можете дать мне какк какому типу потока я должен был бы защитить свой веб-сервис?

С нетерпением ждем совета и опыта людей!:)

Большое спасибо!

Энди

1 Ответ

0 голосов
/ 07 января 2011

Этот способ небезопасен, поскольку silverlight - это технология на стороне клиента, поэтому контроль SL и их конфигурации хранятся на компьютере пользователя.Таким образом, любой пользователь может свободно получить доступ / изменить ключ.
Пользовательские сеансы являются наиболее безопасным способом решения вашей задачи.
Например:
Аутентификация / Авторизация может быть реализована с использованием стандартных (или пользовательских, вы должныреализовать некоторых конкретных поставщиков) роли / членство поставщиков.После аутентификации клиент получает токен сеанса, сгенерированный сервером (например, guid).Такие же guid хранятся в базе данных на стороне сервера (например, в базе данных, в которой хранятся все роли, пользователи и т. Д.).
Срок действия каждого токена сеанса истек (используйте агенты / задачи / планировщики БД для удаления ключей с истекшим сроком действия из базы данных).
Поэтому каждый раз, когда клиент запрашивает какой-либо ресурс, он отправляет серверу свой токен сеанса, а также другие параметры запроса.После получения запроса сервером ищите тот же токен сеанса в БД и, если токен существует, предоставьте доступ к запрашиваемому ресурсу.В противном случае проверка подлинности завершится неудачей.

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

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