Проверка подлинности сертификата .net core 3.1 возвращает 403 при развертывании в Azure.

Я следил за этой документацией (https://docs.microsoft.com/en-us/aspnet/core/security/authentication/certauth?view=aspnetcore-3.1), чтобы реализовать аутентификацию по сертификату в моем API .net core 3.1. Все работает нормально, когда я вызываю свой API на локальном хосте, но постоянно получаю сообщение об ошибке 403 после развертывания API в Azure. Я понятия не имею, что происходит, так как в журналах нет дополнительной информации. Я просто не понимаю, что вызывает 403

Как я понимаю, когда я вызываю свои маршруты API, я должен предоставить сертификат внутри заголовка «X-ARR-ClientCert», который отлично работает локально, но, похоже, не интерпретируется в Azure.

Я что-то упускаю ? Нужно ли мне устанавливать определенные параметры в моей службе приложений?


person Roman Lushkin    schedule 14.02.2020    source источник
comment
Вы пытались загрузить свой сертификат, который вы использовали для настройки аутентификации, в службу приложений Azure? Если нет, перейдите по этой ссылке, загрузите ее в службу приложений Azure и проверьте, работает ли она после этого. docs.microsoft. com/en-us/azure/app-service/   -  person Bhushan    schedule 14.02.2020
comment
Привет ! Да ! Сертификат загружается в API в Azure. Но проблема остается.   -  person Roman Lushkin    schedule 14.02.2020


Ответы (1)


Как сказано в статье, если на сервер отправлен правильный сертификат, данные возвращаются. Если отправляется no certificate or the wrong certificate, возвращается код состояния HTTP 403.

Итак, как сказал Бхушан, подтвердите, что ваш сертификат загружен в службу приложений Azure.

Когда вы включаете взаимную аутентификацию для своего приложения, для доступа ко всем путям в корневом каталоге вашего приложения потребуется клиентский сертификат. Пути исключения можно настроить, выбрав Configuration > General Settings и указав путь исключения.

введите здесь описание изображения

Дополнительные сведения см. в этом статья.

person Joey Cai    schedule 14.02.2020
comment
Привет ! Я действительно видел это уведомление об ошибке 403. О входящих клиентских сертификатах. Когда я включаю его, у меня также возникает ошибка 403, но вызванная исключением. Исключение нанимается в методе StringToByteArray (из документации (docs.microsoft.com/en-us/aspnet/core/security/authentication/) с сообщением: не удалось найти любые узнаваемые цифры. - person Roman Lushkin; 14.02.2020
comment
Можете ли вы также подтвердить настройки службы приложений «Входящие сертификаты клиента»? Включите его, а затем попробуйте снова выключить и проверьте, помогает ли это? - person Bhushan; 14.02.2020
comment
Проблема заключалась в методе преобразования значения заголовка X-ARR-ClientCert в Certificate. В документе, которому я следовал, они преобразуют его из шестнадцатеричной строки, которая работает, когда вы вручную заполняете заголовок в своем клиентском приложении. В моем случае мой тест был сделан через Swagger. Поэтому мне пришлось выбрать один из сертификатов, установленных на моей машине. И когда вы это делаете, сертификат (проходящий через заголовок) шифруется не в шестнадцатеричной строке, а в Base64, поэтому необходимо выполнить преобразование, как описано в статье, упомянутой Джоуи. Я должен был исправить это, чтобы заставить его работать! - person Roman Lushkin; 14.02.2020