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