dotSITE
Форумы Work in Murano Software. Учебник по C#
новости материалы решения форумы группы настройки/о проекте
Логин/Регистрация
Логин:
Пароль:
Запомнить вас:
Регистрация
Забыли пароль?

Комментарии

Ещё раз о моделях безопасности в Web Service.

Ещё раз о моделях безопасности в Web Service.

Для меня, как и остальных начинающих разработчиков на платформе .NET самой большой сложностью было проникнуться её духом.

Таким витиеватым введением статейка снабжена не случайно. Речь в ней пойдёт не о программировании, а о разработке.
Разработка программных продуктов, как известно, начинается с выбора архитектуры. Не надо быть гуру, чтобы догадаться с трёх раз о том, какое приложение пишется. Это приложение к базе данных. Приложение новое, описывается на специализированном мастадайном сайте.
Дополнительно. Я работаю в крупной компании с тысячами подразделений, территориально разнесённых на тысячи километров. Корпоративных сетей не напрокладываешься, реплицировать будешь всю жизнь, ну и потомкам немного оставишь.

Теперь о программной архитектуре:
W2k, .NET Framework, IIS, C#, MSSQL2K, XMLSQL3 etc
Как руководство к действию я рекомендую использовать свою статью, как руководство к действию только в случае полного соответствия программного обеспечения приведённому списку (поверьте моему 8 летнему опыту разработки).

Теперь условие ЗАДАЧИ.
- данные, как говорил Глушков данные реплицируются с самыми высокими качеством и скоростью, если оно не реплицируются вообще. - система территориально разнесена, поэтому следует использовать Internet каналы связи. - данные критичны как к изменению, так и к прослушиванию необходимо потоковое шифрование. - использование нескольких серверов само собой предполагает концепцию "одной точки входа".

Лирическое отступление.
Мне на выработку решения потребовалось около 2 месяцев особую признательность за такие темпы хотелось бы высказать госпоже Mary Kirtland из MSDN за статью "Authentication and Authorization" в одноимённой сети. Прочитанная в самом начале работы, она как потерянная ссылка на COM объект оглупляла меня и прочими изощрёнными способами препятствовала решению задачи. Побольше таких бездарных статей и разработка одного программного продукта превратится в дело всей жизни.
Конец лирического отступления.

Решение ЗАДАЧИ.
В качестве механизма Аутентификации использовать сертификаты. Устанавливается Сервер сертификатов.

Лирическое отступление.
Первый раз мне пришлось исправлять ошибку в русской редакции Web сервера сертификатов полтора года назад. Ошибка - вина переводчиков, типичная опечатка, не позволяющая разработчикам упростить достаточно муторный процесс выписки сертификата. Прошло 2 SP, а bug и ныне там. И обо мне все говорят, что я занудный.
Конец лирического отступления.

Естественно предположить создание Active Directory, для того, чтобы администрирование можно было проводить как-то по-человечески.
Ну, без ручного - автоматизированного mapping-а сертификатов в IIS не обойтись, но согласитесь - лиха беда - начало по сравнению с трёхкратным созданием пользователей. Так в двух словах серверная часть была приспособлена для авторизации.

Третья часть.
Замечательная вещь Windows NT account в MSSQL2K. Но при использовании Anonymous это работает не так хорошо. Благо impersonating за нас выполнил IIS, когда мы мапили сертификаты. Теперь всё что нам остаётся, после всех настроек и экспорта сертификата - это написать строку:

try
{
	ws1.soap m_ws; // ws1 - web reference 
	m_ws = new ws1.soap();  //Yes this code line costs 2 month
	m_ws.ClientCertificates.Add(System.Security.Cryptography.X509Certificates.X509Certificate.CreateFromCertFile(@"c:\test.cer"));
	int rc=0;
	this.dataSet1 = m_ws.mf(out rc); //this method return some data in dataset format
	this.dataGrid1.SetDataBinding(this.dataSet1,""); //V R see it
}
catch(System.Security.Cryptography.CryptographicException ex)
{ 
	this.Text=ex.Message ; //Or not by security risen
}

Best Wishes
Dr. Wicked.


Контакт Реклама на сайте Спонсорам Веб мастерам

Лицензионное соглашение - © 2000-2010 dotSITE
Хостинг .NET предоставлен PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development