none
Не происходит авторизация с помошью сертификата на HTTPS сервере под системной учетной записью RRS feed

  • Вопрос

  • Язык C#

    .NET 3.0

    ОС: Win7

    Задача состоит в том чтобы с удаленного сервера получить файл с данными. Авторизация происходит по сертификату.

    Используется класс наследник WebClient

    class MyWebClient : WebClient
     {
       protected override WebRequest GetWebRequest(Uri address)
      {
       HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
       X509Certificate cert = new X509Certificate("Mycert.p12", "cert_password");
       request.ClientCertificates.Add(cert);
       return request;
      }
     }
    


    Используется так:
    MyWebClient client = new MyWebClient();
    byte[] data = client.DownloadData(url);
    


    Проблема в следующем: Если код работает в Windows.Forms приложении то все хорошо. Когда же код переносится в Службу, запущенную от имени Local Service или Network Service - загрузка данных начинает выбрасывать исключение, из-за того что удаленный сервер начинает возвращать код 401 (не авторизован), как -будто бы сертификата нет. Если же службу запустить от имени пользователя (не администратора) - все работает.

    Кто-нибудь сталкивался с таким? 
    4 ноября 2010 г. 16:42

Ответы

  • Странно, вот похожая тема на английском форуме, и там решение добавить сертифика в хранилище локального компьютера перед использованием. Попробуйте поискать в этом направлении.
    Для связи [mail]
    • Помечено в качестве ответа Abolmasov Dmitry 23 ноября 2010 г. 9:51
    12 ноября 2010 г. 7:04

Все ответы

  • Попробуйте перед использованием сертификата добавить его в хранилище локального компьютера.

    X509Store store = new X509Store(StoreName.My,
    StoreLocation.LocalMachine);
    store.Open (OpenFlags.ReadWrite);
    store.Add (cert);
    store.Close()
    


    Для связи [mail]
    8 ноября 2010 г. 5:38
  • Попробовал. Никаких изменений не увидел - по прежнему код 401 от сервера.
    11 ноября 2010 г. 20:34
  • Странно, вот похожая тема на английском форуме, и там решение добавить сертифика в хранилище локального компьютера перед использованием. Попробуйте поискать в этом направлении.
    Для связи [mail]
    • Помечено в качестве ответа Abolmasov Dmitry 23 ноября 2010 г. 9:51
    12 ноября 2010 г. 7:04