Проверка подлинности API-интерфейса Service Stateless без сертификации - PullRequest
0 голосов
/ 14 декабря 2018

Меня попросили защитить мою конечную точку API без сохранения состояния с использованием аутентификации на основе сертификата.Я прочитал о предмете и понял, что мне нужно создать промежуточное программное обеспечение для проверки запроса, а затем проверить наличие заголовка x-ARR-ClientCert, чтобы проверить, действителен ли сертификат или нет, основываясь на некотором отпечатке.Все идет нормально.

Проблема в том, что я не могу протестировать промежуточное ПО, потому что не знаю, как отправить такой заголовок.У меня уже есть самоподписанный сертификат (.crt) и ключ (.key).Я пытался с почтальоном, но не вижу, как отправляется x-ARR-ClientCert во время отладки на VS2017.

Любая помощь?

Изменить 1

Я слежу за этим уроком: https://blogs.msdn.microsoft.com/kaevans/2016/04/13/azure-web-app-client-certificate-authentication-with-asp-net-core-2/

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

Одна вещь, которую я забыл здесь упомянуть, это то, что мой API находится в локальном кластере Service Fabric, поэтому это может быть проблемой

Редактировать 2

Для Почтальона, я следовал этому уроку: Почтальон Учебник , но безуспешно: сначала я должен был отключить проверку ssl, а затем, когда добавил сертификат в Почтальон,заголовок x-ARR-ClientCert не отправлялся.

Я также попробовал curl: > curl --cert cert.crt --key client.key https://localhost/api/values --insecure, но x-ARR-ClientCert по-прежнему не отправляется.

1 Ответ

0 голосов
/ 14 декабря 2018

Я не уверен, что вы пытаетесь выполнить ...

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

Если планируется сделать это для автоматизации, в блоге почтальона есть статья о том, как настроить клиентские сертификаты для этого сценария.Другой вариант - попытаться отправить сертификат с использованием CURL, как описано здесь .

Во-вторых, вы заново изобретаете колесо, уже есть некоторые готовые реализации в kestrel, использующие HttpsConnectionAdapterOptions.ClientCertificateMode = RequireCertificate и некоторые промежуточные программы авторизации здесь и здесь .

И, наконец, убедитесь, что в середине нет прокси-сервера или что прокси или шлюзне удаляет сертификат из клиентского подключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...