Как я могу запретить браузерам запрашивать у пользователей сертификат клиента? - PullRequest
0 голосов
/ 21 января 2019

Я размещаю веб-API ASP.NET Core 2.1 и веб-приложение в Kestrel на одном и том же порту (используя HTTPS, но не на порту 443). Я не могу изменить свой назначенный номер порта.

Web API может принимать самозаверяющий сертификат клиента в качестве одной из форм аутентификации (вместо учетных данных пользователя). К сожалению, при попытке доступа к странице входа из браузера (Firefox, IE, Edge, Chrome) браузер предложит пользователю выбрать сертификат клиента. Однако я не пытаюсь выполнить взаимную аутентификацию; и я не хочу пытаться добавить самоподписанный сертификат в список доверия сертификатов (CTL).

Я видел примеры, когда для роли можно определить политику, а затем для роли может потребоваться сертификат, однако он не работает: браузер по-прежнему запрашивает сертификат у пользователя.

var webHostBuilder = new WebHostBuilder()
    .UseSerilog()
    .UseKestrel(options => {
        options.Listen(IPAddress.Any, port, listenOptions => {
            var httpsConnectionAdapterOptions = new HttpsConnectionAdapterOptions {

                // This line is required to allow a Client Certificate to be provided
                // for authentication with the Web API.  However, it also makes 
                // browsers prompt for a certificate.
                ClientCertificateMode = ClientCertificateMode.AllowCertificate, 

                SslProtocols = System.Security.Authentication.SslProtocols.Tls12,
                ServerCertificate = GetCertificate()
            };

        listenOptions.UseHttps(httpsConnectionAdapterOptions);
    });

При использовании веб-приложения я бы хотел, чтобы браузеры не предлагали пользователям выбирать сертификат. Однако браузеры предлагают пользователям выбрать сертификат.

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