0

Я хотел реализовать процедуры проверки подлинности и авторизации форм ASP.NET для своих приложений Windows Forms или WPF, взаимодействующих с веб-сайтом ASP.NET WCF (и SOAP) Сервисы.Реализация аутентификации и авторизации форм ASP.NET для Windows Forms или автономного приложения WPF

Использование Fiddler Я исследовал, как Silverlight использует свой веб-сервис WCF RIA Services во время процедур входа/выхода, и, насколько я вижу, это сообщение - это всего лишь набор вызовов POST и GET HTTP.

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

То, что я не знаю точно, это то, что может быть самым высоким уровнем набора классов System.Net и их методов для реализации аутентификации и авторизации форм ASP.NET между приложением WinForms/WPF и ASP.NET WCF (и, если возможно, SOAP) Web-сервис, с сеансом связи, который поддерживался после входа в систему, при этом cookie-приложения ASP.NET/приложения передавались здесь и там как можно более прозрачно для меня (IOW без слишком низкого уровня C#/.NET Framework программирование). Будет ли System.Net.WebClient быть достаточно хорошим для выполнения моей задачи? Знаете ли вы, что готовы использовать простые решения с открытым исходным кодом C#?

ответ

1

Несколько лет назад я уже писал о том

http://www.wiktorzychla.com/2010/04/aspnet-forms-authentication-sharing-for.html

http://www.wiktorzychla.com/2008/02/clickonce-webservice-and-shared-forms.html

Идея заключается в том, чтобы разделить печенье проверки подлинности форм, так что служба ФОС также охраняемую ею. Таким образом, вы даже можете запустить приложение из браузера (clickonce) или реализовать пользовательскую форму входа, которая просто отправляет имя пользователя/pwd на сервер и получает файл cookie, а затем использует его.

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

+0

Благодарим вас за ответ. Если я получил его правильно, вы «заимствовали» файлы cookie для проверки подлинности ASP.NET Forms в приложении ClickOnce из входа в систему для пользователя сайта ASP.NET? И моя задача - * напрямую войти в систему * из приложения WinForms/WPF в веб-службу ASP.NET WCF/SOAP и поддерживать это подключенное к сети соединение (как можно проще с автоматическим потоком аутентификации cookie здесь и там), в то время как WinForms/Приложение WPF взаимодействует с веб-службой через экземпляр System.Net.WebClient. Полагаю, это возможно. Посмотрите, как файлы cookie создаются при входе в систему. Http://tinyurl.com/pwlpdq3 – ShamilS

+0

@ShamilS: Еще раз, вы можете иметь метод в своей службе, который берет что-либо у пользователя и выдает cookie. Таким образом, вы напрямую заходите из winforms-приложения в службу wcf. Кроме того, забудьте о веб-клиенте, вместо этого используйте служебные прокси или, по крайней мере, ChannelFactory. Это сэкономит вам много сил. –

+0

Благодарим вас за дополнительную заметку. Было бы правильно, если бы я рассматривал это так, как вы говорите, что если я использую служебный прокси (/ ChannelFactory) вместо System.Net.WebClient, и у меня будут, скажем, вход, метод GetReport и Logout для моего веб-сервиса, где Login будет выдавать FormsAuthentication.SetAuthCookie (имя пользователя, false) [с именем пользователя/паролем, подтвержденным до этого вызова], GetReport будет использовать - if (Thread.CurrentPrincipal.Identity.IsAuthenticated) {... и файлы cookie, созданные в Login, будут автоматически протекать между сервер и клиент до выключения веб-звонка сбрасывает файлы cookie с помощью FormsAuthentication.SignOut()? – ShamilS