Как клиентское приложение WPF проходит проверку подлинности с помощью службы WCF в Azure?

В настоящее время я рассматриваю возможность создания приложения для развертывания в лазурном облаке. Основной причиной выбора Azure вместо Amazon является служба контроля доступа. Я хочу принимать как можно больше различных типов учетных данных для своего приложения, особенно Facebook.

Некоторые пользователи будут использовать приложение на основе HTML, другие — клиентское приложение WPF. Вопрос в том, как мне аутентифицировать клиента, используя любого поставщика, которого они хотят, а затем связаться со службой WCF. Я предполагаю, что мне нужно использовать компонент веб-браузера в моем приложении или открыть внешний браузер (в идеале поддерживать оба варианта для параноидальных пользователей), но я не понимаю, как затем использовать это соединение для службы WCF. .


person ForbesLindesay    schedule 20.09.2011    source источник
comment
+1 Интересный вопрос. Я не уверен, что есть простой ответ, но я буду смотреть этот.   -  person David Steele    schedule 20.09.2011
comment
Только что нашел msdn.microsoft.com/en-us/, который может оказаться полезно, сейчас читаю.   -  person ForbesLindesay    schedule 20.09.2011
comment
К сожалению, в примере вне браузера используются имя пользователя и пароль, поэтому Facebook не поддерживается.   -  person ForbesLindesay    schedule 20.09.2011
comment
Загляните в блог Витторио Берточчи (иначе известного как Captain Identity). Если вы можете это сделать, это будет там. Есть пост, показывающий, как это сделать в метро. blogs.msdn.com/b/vbertocci   -  person David Steele    schedule 20.09.2011


Ответы (3)


Рассмотрите возможность отделения проверки подлинности пользователя в приложении от проверки подлинности между приложением и службой WCF.

Чтобы защитить доступ к службе WCF, вы можете использовать ACS для реализации проверки подлинности с помощью простого веб-маркера (SWT). Есть несколько примеров этого, доступных через выбранную вами поисковую систему.

К сожалению, я не могу привести более конкретный пример в данный момент. Я мобилен с i-устройством и поэтому имею ограниченный доступ к инструментам.

person Steve Morgan    schedule 20.09.2011
comment
Служба WCF должна знать, кто такой пользователь, и иметь возможность гарантировать его подлинность, я не совсем понимаю, как ваше решение предназначено для этого. Аутентифицирует ли SWT приложение или пользователя? - person ForbesLindesay; 21.09.2011

Я думаю, что вы намерены как-то аутентифицировать/авторизовать пользователей для этой службы WCF, верно? В этом случае вы можете посмотреть пример «приложения для телефона Windows 7»: http://msdn.microsoft.com/en-us/library/gg983271.aspx. Здесь вы увидите, что этот пример использует протокол «javascriptnotify».

Для элемента управления WPF WebBrowser есть много статей, в которых описывается, как получать уведомления из javascript в DOM.

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

В случае веб-приложения вы можете получить токен из модуля WSFam. Одним из способов сделать это может быть регистрация на событие SecurityTokenReceived в WSFam.

Таким образом, для обоих сценариев вы можете получить токен SAML.

Затем вы можете создать свой собственный SAML TokenProvider для WCF и использовать токен SAML, полученный от ACS, для связи с вашим сервером.

person Atacan    schedule 20.09.2011

То, что вы ищете, называется «активной федерацией». См. этот вопрос

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

person stombeur    schedule 03.03.2014