Проверка подписанного клиентом запроса X509 в веб-API без установки в магазин

У нас есть приложение Web API 2, доступное внешним поставщикам для различных интеграций. Мы добавляем новый с DocuSign через их службу Connect, и они будут подписывать свои запросы своим сертификатом X509. Я бы предпочел не устанавливать сертификат на сам сервер, потому что мы часто добавляем новые серверы и развертывания в зависимости от нагрузки.

Вот мой план, и я хотел бы знать, какие риски безопасности связаны с ним (при условии, что он вообще сработает).

DocuSign предоставляет свой сертификат X509 для загрузки. Я хочу поместить этот файл *.cer в папку ~/App_Data моего приложения веб-API вместе с любыми другими сертификатами от любых других поставщиков. Я буду использовать DelegatingHandler, чтобы получить сертификат клиента из запроса. Затем я бы использовал класс X509Chain, как описано здесь для загрузки все сертификаты из папки ~/App_Data и проверить сертификат запроса.

Оттуда я бы сопоставил субъект сертификата с ролью и добавил бы его в текущий поток, чтобы обеспечить аутентификацию для определенных маршрутов.

Из своего исследования я пришел к выводу, что этот метод будет менее безопасным, чем установка сертификата DocuSign в корневом хранилище сервера — это правильно? И насколько менее безопасно?

В конце дня я хотел бы (1) убедиться, что запрос исходит от того, от кого, по его словам, он исходит, и (2) добавить роли на основе проверенного запрашивающего для аутентификации.


person Chris Hines    schedule 19.08.2014    source источник
comment
Здравствуйте, вы нашли ответы на свой вопрос? Мы изучаем ту же архитектуру, что и вы. И я хотел бы знать, придерживаетесь ли вы запланированного.   -  person Michel Tol    schedule 09.04.2015