Аутентификация пользователя по Oid в Ssl

Тема в разделе "Другие", создана пользователем Dionis, 10 июн 2010.

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

    Dionis Гость

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

    Возникла такая проблема:

    Имеем: Windows Server 2008 R2, IIS 7, КриптоПро CSP 3.6.1 - CSP + TLS.

    Надо: сделать в Веб-сервис, который должен работать по двустороннему TLS и работать только с клиентскими сертификатами, в которых, в EKU указан OID 1.2.3.4.5.6.7.8.

    Использование Сопоставления клиентских сертификатов по схеме «многие к одному» не канает, поскольку в iisClientCertificateMappingAuthentication при создание правил возможно осуществлять проверку только полей Issuer и Subject.

    Нашёл вот такую вещицу: (http://www.trusted.ru/bbpress/topic.php?id=27918)
    Оно понятно, это ж Аппач!!! Но ведь судя по картинке:

    [​IMG]
    в сервере IIS роль Trusted TLS выполняет КриптоПро TLS! А можно ли КриптоПро TLS как то настроить подобным образом?

    Ну или мож кто посоветует в каком направлении то копать? А то бьюсь уже вторую неделю...

    Была идея в самом Web-сервисе, в коде, в методах выцепить клиентский сертификат, а там уже обрабатывать его как хошь. Но чо то он как то не выцепляется. А можно ли его вообще выцепить в Web-сервисе?
     
  2. Dionis

    Dionis Гость

    Мож кому пригодиться...

    Используем горячо всеми любимый метод Хелловорд:

    Код (Text):
        [WebMethod]
    public string HelloWorld() {
    String Res = "", MyOID = "1.2.3.4.5.6.7.8";
    Boolean Exist = false;
    X509Certificate2 x509 = new X509Certificate2();
    x509.Import(HttpContext.Current.Request.ClientCertificate.Certificate);

    foreach (X509Extension extension in x509.Extensions)
    {
    if (extension.Oid.FriendlyName == "Enhanced Key Usage")
    {
    X509EnhancedKeyUsageExtension ext = (X509EnhancedKeyUsageExtension)extension;
    OidCollection oids = ext.EnhancedKeyUsages;
    foreach (Oid oid in oids)
    {
    if (oid.Value == MyOID) Exist = true;
    }

    if (Exist)
    {
    Res = "О, ДА! ТЫ правильный чувак! У тебя есть OID: "+MyOID;


    ... тут обработка метода ...

    }
    else
    {
    Res = "А ну брысь отсюда, шпана голопузая!";
    }

    }
    }

    return Res;
    }
    Всё. Тема закрыта.
     
Загрузка...
Статус темы:
Закрыта.

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