Защита сессий данных через WFC / JSON с помощью файлов cookie или альтернативных методов - PullRequest
2 голосов
/ 19 февраля 2012

У меня около 5 часов поиска того, что было бы лучшим способом "защитить" сеансы данных / сеансы входа через WCF.

Некоторые факты:

  • WCFкод находится на C # и будет размещен в сети для всех пользователей (API)
  • Будет отдельный веб-сайт, который использует API в качестве графического интерфейса для пользователей
  • Он также будет использоватьсяiPhone, Android и все остальное, что я могу вспомнить
  • Данные будут отправлены с использованием JSON
  • Самое важное: доступ к API будет осуществляться через SSL

Вариант 1 -

Я играл с использованием куки для безопасного доступа к системе API.Я знаю простой, но грубый способ - отправить запрос, как если бы это был HTTP-запрос из браузера, и использовать Аутентификация по формам .Я бы предпочел сделать это, используя только JSON и Cookies - при условии, что я пойду по этому маршруту.

Вариант 2 -

Это, как говорится о Cookies.Я подумал о другом способе сделать это, может быть, это более безопасный способ?Я хотел бы передать объект аутентификации (пользовательский класс) через JSON вместе с объектами, необходимыми для каждого вызова.В этом объекте аутентификации будет два или более члена:

  1. SessionID: это будет GUID, который хранится в базе данных API
  2. HashValue: возможно MD5 Hash, у меня естьНе было решено, что это будет обновляться при каждом вызове

Идея обновления HashValue при каждом успешном вызове API состоит в том, что локально сохраненный объект аутентификации клиента будет изменен, чтобы избежать подменыможет быть осуществлено.По крайней мере, я в это верю, может, я ошибаюсь?

Примечание: Это значение будет создано на стороне сервера, сохранено в базе данных и передано обратно клиенту.

Я не уверен, в какую сторону идти.Если вариант 2 будет лучшим путем, то я уйду.

Только если вариант 1 является лучшим, тогда моя проблема в том, что я на самом деле не могу найти, как установить cookie в службе WCF на стороне API.Любые указатели?

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 19 февраля 2012

Преимущество использования проверки подлинности с помощью форм заключается в том, что вам не нужно беспокоиться о наличии опыта профессионала в области безопасности / криптографии.Вы можете использовать уже усиленный способ безопасного управления сеансом.Кроме того, соблюдение протокола HTTP ограничивает проблемы с брандмауэрами, поскольку большинство мест разрешают исходящий трафик через порт 80 и 443.

Ваш вариант 2, по сути, выполняет то же самое, что и проверка подлинности с помощью форм, с изменяющимся хешем.Обычно наличие изменяющегося значения (хеш-значения или непредсказуемого значения) называется одноразовым номером и используется с OAuth.

Рассмотрим поддержку OAuth, поскольку она не зависит от платформы, и для этого также есть уже написанные библиотеки..

Но если бы я и использовал C # и WCF, я бы придерживался Аутентификации по формам и приложил свои усилия к реальной логике в API, которая является моим конкретным опытом.

...