Защита сервисных вызовов WCF и установление сеанса с клиента, отличного от Windows Mobile. (например, iPhone) - PullRequest
1 голос
/ 07 июля 2011

Мы хотели бы добиться следующего очень общего, повседневного сценария в любом веб-приложении. Мы хотели бы защитить звонок от клиента, не являющегося Windows (то есть, не являющегося клиентом .NET), к веб-сервису WCF. Клиент - это мобильное устройство (iPhone, Android или Blackberry, но должно работать на всех из них), а также предполагается, что нативное приложение будет приложением для банковского (финансового) домена. Таким образом, безопасность не может быть поставлена ​​под угрозу.

  1. Пользователю будет предоставлен экран для ввода имени пользователя и пароля.

  2. Сервисный вызов WCF аутентифицирует учетные данные пользователя (мы хотели бы знать, как защитить этот сервисный вызов WCF)

  3. После успешной аутентификации, все последующие вызовы не должны передавать имя пользователя и пароль.

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

Как вы понимаете, мы ищем безопасный сеанс от клиента Windows теперь к службам WCF. В ожидании решения (исключая сеансы ASP.NET) для защиты каждого вызова службы и авторизации вызова.

Пожалуйста, ответьте обратно с кодом, конфигурация

Спасибо и всего наилучшего,

Milind

1 Ответ

2 голосов
/ 07 июля 2011

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

Ответом на ваше требование безопасности является HTTPS. Это гарантирует, что сообщение не будет скомпрометировано. Ответом на ваше требование аутентификации является обычная аутентификация (и, возможно, настраиваемый модуль HTTP для обработки аутентификации, если вы размещаете службу в IIS) или профиль токена UserName для передачи учетных данных в теле сообщения (только службы SOAP).

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

WCF поддерживает сеанс безопасности, реализованный поверх WS-SecureConversation, но ни одна из мобильных платформ не поддерживает его, и это довольно сложная спецификация, поэтому вы не будете пытаться реализовать его самостоятельно (если вы это сделаете, вы можете продать его как отдельный проект). Более того, с очень плохой поддержкой SOAP на iPhone вы, скорее всего, будете использовать службу REST, где не существует ничего, кроме безопасного разговора или даже сеанса.

Если вам нужен какой-либо сеанс, вам придется использовать ASP.NET Session (= AspNetCompatibility) или вам придется реализовать собственное управление сеансом и передавать маркер сеанса в cookie (= обычно такой же механизм, как сеанс ASP.NET) или в тело сообщения (= обычно то, что делает WS-SecureConversation, но оно обрабатывает все аспекты безопасности, связанные с этим).

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