25.07.2006 11:35:17Получение сертификата пользователя через Active Directory Ответов: 9
DmitrySukach
Операционка MS Server 2003, установлена Microsoft Certification Authority, в ней зарегестрирован сертификат. В Active

Directory этот сертификат соотнесён с некоторым пользователем U1 (Console Root\Active Directory Users and Computers ->

Actions->All tasks->Name mapping->X.509 Certificates). Необходимо ПРОГРАММНО (с помощью CryptoAPI) получить этот сертификат

для данного пользователя. Единственное, что нашёл в MSDN для этого:

http:/msdn.microsoft.com/library/default.asp?url=/library/en-us/seccrypto/security/retrieving_an_issued_certificate_from_t

he_active_directory.asp. Запускаю, возвращает для пользователя U1 и для любого пользователя из данной папки Active

Directory одинаковый сертификат, который берёт непонятно откуда. Меняю CertFindCertificateInStore на

CertEnumCertificatesInStore в цикле - результат тот же. Для любого пользователя находится только всё тот же один

сертификат. Сертификат, который "примаплен" к U1, не находит.
Есть у кого дельные советы? Буду весьма благодарен.
 
Ответы:
25.07.2006 13:36:56maxdm
Пример из MSDN - просто поиск в хранилище AD и никакого отношения к Name Mapping не имеет.
25.07.2006 13:48:39maxdm
Как достать сертификат из CAPI навскидку не знаю, но беглый просмотр AD показал, что сертификаты из адресной книги лежат блобами в атрибуте UserCertificate пользователя.
25.07.2006 14:00:24DmitrySukach
К решению проблемы, как найти "примапленный" к пользователю сертификат, к сожалению эти ответы не приблизили...
25.07.2006 14:55:18maxdm
примапленного сертификата в AD просто нет - на то он и примапленный.
26.07.2006 10:40:17DmitrySukach
И всё-таки как же с помощью CryptoAPI получить сертификат присвоенный пользователю в Console Root\Active Directory Users and Computers->Actions->All tasks->Name mapping->X.509 Certificates?
26.07.2006 11:19:19maxdm
предыдущий ответ не понятен?
26.07.2006 11:48:20DmitrySukach
Понятно только то, что в AD его нет. Это значит, что в CryptoAPI получить по пользователю, примапленный к нему сертификат невозможно?
26.07.2006 11:55:54DmitrySukach
Искомый сертификат хранится на сервере в хранилище ROOT. К серверу коннектится пользователь, к нему в Active Directory примаплен некоторый сертификат. COM-объект на сервере должен узнать по данным пользователя, какой именно, тогда можно получить его контекст из ROOT. Вопрос, как с помощью CryptoAPI или чего угодно узнать какой сертификат примаплен к данному юзеру?
26.07.2006 13:26:52maxdm
Обычно выполняется обратная задача и по сертификату находится пользователь в AD (маппирование сертификатов в IIS.)
А в Вашем случае, похоже, придется вручную разбирать структуру хранения маппинга в AD и перебирать сертификаты.