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

Тема в разделе ".NET", создана пользователем *null, 16 май 2007.

Статус темы:
Закрыта.
  1. *null

    *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) или есть варианты лучше?

    Спасибо!
     
  2. Pasha

    Pasha Гость

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

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

    *null Гость

    Pasha, спасибо!

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

    Pasha Гость

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

    *null Гость

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

    Кстатьи X509Certificate.GetRawCertData() помогло :)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей