Как проверить подлинность клиента Windows Mobile, вызывающего веб-службы в веб-приложении - PullRequest
3 голосов
/ 21 марта 2010

У меня довольно сложное бизнес-приложение, написанное на ASP.NET, которое развернуто на размещенном сервере. На сайте используется проверка подлинности с помощью форм, и определено около десятка различных ролей. Сотрудники и клиенты являются пользователями приложения.

Теперь у меня есть требование разработать клиент Windows Mobile для приложения, которое позволяет выполнять очень специализированный набор задач с устройства, в отличие от браузера на ноутбуке. Клиент хочет повысить производительность с помощью этой меры. Только сотрудники будут использовать это приложение.

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

Моя идея состоит в том, чтобы развернуть набор веб-служб в папке существующего сайта, к которой имеет доступ только новая роль «веб-служба», и использовать проверку подлинности с помощью форм (из клиента Windows Mobile 5 / .Net 3.5) ,

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

Могу ли я сделать это, это хорошая идея, и есть ли примеры кода / ссылки, на которые вы можете указать мне?

1 Ответ

1 голос
/ 20 мая 2010

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

Поскольку я хочу использовать учетные записи пользователей из веб-приложения, я решил эту проблему, просто вызвав Membership.ValidateUser перед обработкой каждого вызова службы на сервере.

Пользователю предлагается ввести идентификатор и пароль при входе в систему на клиенте. Я храню оба значения в зашифрованном виде в прокси-классе и передаю их прозрачно при каждом вызове с использованием заголовка узла, так что приложению не нужно беспокоиться об этом после входа пользователя в систему, то есть учетные данные были проверены один раз при вызове Login ) сервисный метод (который вызывает только Membership.ValidateUser).

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

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