2014-10-27 2 views
-1

Используя последние версии VS 2013 и Azure SDK 2.4, я создал в ней веб-роль и службу WCF. Эта услуга будет потребляться стандартным сгенерированным прокси-сервером ссылки службы .NET.Самый простой способ защитить Azure Web-роль Служба WCF

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

Некоторая дополнительная информация о прецеденте:

  • Там будет только один пользователь
  • Это полностью ОК храните любой секрет на стороне клиента (например, имя_пользователя/pwd или сертификат), потому что клиентское приложение будет работать в защищенном месте
  • Я просто хотел бы запретить доступ к моей службе для общественности. Только мое защищенное место, работающее с клиентским приложением, должно получить к нему доступ, я бы хотел больше не меньше.

Так что я ищу в Интернете, и больше я читаю больше. Я смутился и переполнил возможности и возможности, в которых мне не нужно. При поиске сертификата клиента я нахожу сверхсложные методы федеративного auth с сертификатами temp на стороне сервера и т. Д., Что я не уверен, что мой простой случай использования требует.

Любая помощь приветствуется. Заранее спасибо

+0

Спасибо за минус. Кроме того, что вы наложили хоть один удар, вы написали несколько комментариев? –

ответ

1

Если вы действительно хотите ограничить доступ, я бы посмотрел на сертификаты клиентов. Конфигурирование azure для клиентских сертификатов кажется довольно сложным для детализации в одном сообщении SO, поэтому я приведу вас к этому сообщению в блоге client-certificates-in-windows-azure, и я опишу ниже. [Я использовал это недавно, так что знаю, что он работает]

По существу вы можете сделать свои собственные сертификаты с помощью makecert [ПРИМЕЧАНИЕ. Возможно, вам понадобится официальный сертификат SSL для вашего сайта и используйте только самозаверяющие для ваших клиентских сертификатов.]

Затем вы настраиваете свой сайт для принятия сертификатов клиентов - d используйте appcmd.exe и задание на запуск, но, как сообщается в блоге, ваш сайт не готов, поэтому вместо этого вам нужно добавить это в свой webrole. OnStart метод [Я фактически спустился по первому пути appcmd.exe и был v ery confused].

using (var serverManager = new ServerManager()) 
{ 
    try 
    { 
     var siteName = RoleEnvironment.CurrentRoleInstance.Id + "_Web"; 
     var config = serverManager.GetApplicationHostConfiguration(); 
     var accessSection = config.GetSection("system.webServer/security/access", siteName); 
     accessSection["sslFlags"] = @"SslNegotiateCert"; 

     serverManager.CommitChanges(); 
    } 
    catch (Exception ex) 
    { 
     ... 
    } 
} 

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

Смежные вопросы