У нас есть приложение Web API 2, доступное внешним поставщикам для различных интеграций. Мы добавляем новый с DocuSign через их службу Connect, и они будут подписывать свои запросы своим сертификатом X509. Я бы предпочел не устанавливать сертификат на сам сервер, потому что мы часто добавляем новые серверы и развертывания в зависимости от нагрузки.
Вот мой план, и я хотел бы знать, какие риски безопасности связаны с ним (при условии, что он вообще сработает).
DocuSign предоставляет свой сертификат X509 для загрузки. Я хочу поместить этот файл *.cer в папку ~/App_Data моего приложения веб-API вместе с любыми другими сертификатами от любых других поставщиков. Я буду использовать DelegatingHandler, чтобы получить сертификат клиента из запроса. Затем я бы использовал класс X509Chain, как описано здесь для загрузки все сертификаты из папки ~/App_Data и проверить сертификат запроса.
Оттуда я бы сопоставил субъект сертификата с ролью и добавил бы его в текущий поток, чтобы обеспечить аутентификацию для определенных маршрутов.
Из своего исследования я пришел к выводу, что этот метод будет менее безопасным, чем установка сертификата DocuSign в корневом хранилище сервера — это правильно? И насколько менее безопасно?
В конце дня я хотел бы (1) убедиться, что запрос исходит от того, от кого, по его словам, он исходит, и (2) добавить роли на основе проверенного запрашивающего для аутентификации.