• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Передача методу Webservice-а X509certificate-параметра

  • Автор темы *null
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

*null

Здравствуйте!

Есть веб сервис, которому необходимо проводить аутентификацию пользователей.
Допустим серивис имеет метод Login которому передается login/password и сертификат пользователя (чисто для примера). К сервису подключается WindowsApplication и производит вызов этого метода.
Проблема: login/password как string'и передаются без проблем, а передача X509Certificate вызывает такую ошибку:

Argument '3': cannot convert from 'System.Security.Cryptography.X509Certificates.X509Certificate' to 'Client.test.X509Certificate'

Вот прототип метода Web-сервиса:

[WebMethod]
public uint Login( string login,
string password,
X509Certificate ClientCert)
{
...


А так пытаюсь его вызвать из WindowsApplication:


test.Service s1 = new Client.test.Service();
X509Certificate cert = new X509Certificate("C:\\testClientCert.cer");
s1.Login("name", "pass", cert);
...


С чем такое может быть связано?
Если пытаюсь в WindowsApplication создавать объект класса Client.test.X509Certificate - он создается, но это не понятно (мне) что такое вообще. Конструктор никаких аргументов вообще не принимает, как этот объект инициализировать тоже не понятно. В общем хепл, плиз...


P.S. И еще вопрос. Как лучше всего проводить аутентификацию клиета? создавать для него сессионную переменную, каждому методу сервиса передавать структуру (login/password/ClientCertificate) или есть варианты лучше?

Спасибо!
 
P

Pasha

1. Есил коротко - то. передавай X509Certificate.GetRawCertDataString. Client.test.X509Certificate - это прокси, созданный студией по образу и подобию, в нем кроме public свойств ничего нет.

2. Переменная в сесии (не забудь сессию включить для web service), HTTP Authentication (http://msdn2.microsoft.com/en-us/library/sxhw3bcy.aspx), токены,.... смотря какой уровень секьюрности требуется.
 
N

*null

Pasha, спасибо!

1. Попробую.
2. Безопасно ли использовать сессии в WebSerivce-ах для аутентификации/авторизации пользователей? - Понятно, что "смотря как сделать", но является ли такой подход изначально уязвимым? Насколько накладно (по использованию ресурсов) для сервера их использование? Использовать токены/надстроки типа WSE не хотелось бы.
 
P

Pasha

Сессия привязывается через Cookie (ASP.NET_SessionId). Cookies передаются по http в открытом виде. Вобщем, https - твой выбор. Расход ресурсов - почти никакой.
Хотя, сессия не нужна, просто cookies тоже вполне хватит. :)
 
N

*null

Pasha, еще раз спасибо!

Кстатьи X509Certificate.GetRawCertData() помогло :)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!