CORS с клиентскими https сертификатами

У меня есть сайт с двумя серверами https. Один (внешний интерфейс) обслуживает пользовательский интерфейс из статических страниц. Другой (бэкэнд) обслуживает микросервис. Оба они используют один и тот же (тестовый) сертификат X509 для идентификации себя. По отдельности я могу подключиться к ним обоим через https, требуя сертификат клиента «тестер».

До сих пор мы скрывали проблемы с CORS, выполняя настройку nginx, которая заставляет внешний и внешний интерфейсы казаться одинаковыми Origin. Я реализовал заголовки «Access-Control-Allow-Origin», «Access-Control-Allow-Credentials» для всех запросов; с методами, заголовками для запросов предварительной проверки (ОПЦИИ).

В Chrome, кросс-сайт, как это работает просто отлично. Я вижу, что внешние и внутренние URL-адреса - это разные сайты. Я вижу запросы OPTIONS, которые выполняются до выполнения запросов бэкэнда.

Хотя в Chrome это не требуется, я нашел объект xmlhttprequest, который будет использоваться для выполнения запроса, и выполнилxhr.withCredentials = true на это, потому что, кажется, это то, что fetch.js делает под капотом, когда он получает"credentials":"include", Я заметил, что естьxhr.setRequestHeader доступна функция, которая может понадобиться, чтобы сделать Firefox счастливым.

Firefox ведет себя идентично для вызовов пользовательского интерфейса. Но для всех внутренних вызовов я получаю 405. Когда это происходит, сетевое соединение с сервером не устанавливается. Браузер просто решил, что это 405 без выполнения запроса https. Несмотря на то, что это поведение отличается от Chrome, оно имеет смысл. И интерфейсный пользовательский интерфейс, и серверная служба нуждаются в выборе сертификата клиента. Я выбрал сертификат «тестер» при подключении к интерфейсу пользователя. Когда он отправляет бэкэнд-запрос, он может предполагать, что тот же сертификат клиента должен использоваться для достижения серверной части. Но, возможно, это предполагает, что это может быть по-другому, и есть кое-что еще, что я должен сказать Firefox.

Кто-нибудь здесь использует CORS в сочетании с 2-сторонними SSL-сертификатами, подобным этому, и имел эту проблему с Firefox и где-то ее исправил. Я подозреваю, что это не исправление на стороне сервера, а то, что клиент должен сделать.

Ответы на вопрос(1)

Ваш ответ на вопрос