2013-04-04 4 views
0

Я работаю над небольшим сервисом, доступным с клиента на Windows Phone 8 и/или WinRT-устройстве, для которого требуется умеренная степень безопасности. Моя цель - создать службу, которая работает в Windows Azure.WCF с HTTPS и Windows Phone 8

Мое приложение требует аутентификации, которая проверяет две вещи: 1) Подлинность клиента полномочий 2) пользователя клиента

Шаг 1) мне нужно быть уверенным в достаточной степенью, что приложение вызова службы является , на самом деле, мое клиентское приложение.

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

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

Однако, поскольку я новичок во всех этих сертификатах shenanigans, мой вопрос заключается в том, могу ли я использовать самозаверяющие сертификаты для обеспечения моего соединения? Только мой сервер и мой клиент должны иметь возможность проверить подлинность. Кроме того, любые указания на то, как это делается в случае WP8 + Windows Azure?

Еще одна сделка заключается в том, что при условии, что отличный хакер нарушит мою программу с клиентского оборудования, может ли он взять сертификат и использовать его для создания своего собственного клиента для входа в систему с его именем/паролем и выполнением действий, выполняемых моим оригинальный клиент? Или есть способ предотвратить это на стороне клиента? Другими словами, может ли мой сервер быть уверенным в подлинности клиентского программного обеспечения на основании наличия действительного сертификата, подписанного мной?

ответ

1

Шаг 1 в значительной степени невозможно. Независимо от того, какой метод аттестации вы используете в коде, он может дублироваться в коде другой программой.

Шаг 2 не требует WCF, хотя вы можете использовать его с базовым auth. Так же легко выставить службу RESTful с помощью WebAPI, которая также поддерживает базовый auth. Обеспечение связи одинаково для WCF или WebAPI - использование SSL.

WCF не любит самоподписанные сертификаты, и настройка его для использования в них устраняет некоторую безопасность, в зависимости от того, как вы это делаете. Учитывая, что сертификаты SSL от доверенных ЦС начинаются со скоростью около 10 долларов США, было бы ложной экономикой, чтобы не получить ее. Работники Azure поддерживают SSL-сертификаты, а поддержка Azure Web Sites идет, хотя и без твердой даты.

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