1

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

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

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

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

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

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

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

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

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

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

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

Энди

ответ

0

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

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

+0

А, хорошо, что SL является клиентской стороной! Полностью забыл о последствиях. Я думаю, что понимаю вашу идею, мне нужно будет немного подумать об этом чуть больше в понедельник! :) – Andy