Запуск запроса сертификата клиента при нажатии кнопки - PullRequest
0 голосов
/ 17 июня 2020

У меня есть приложение React, обслуживаемое веб-сервером express. В этом приложении мне нужно запрашивать сертификат клиента у пользователя, когда он нажимает кнопку «Войти». Это для авторизации с использованием общих карт доступа.

Мой express сервер использует модуль https с параметрами, установленными на требование сертификата клиента. Он запрашивает пользователя сразу при посещении веб-сайта, но я ожидал, что приглашение будет отображаться только при посещении / запросе конечной точки /authorize из-за этого кода:

# Serve React app
app.use(express.static(path.join(__dirname, "..", "build")));

# Request client certificate
app.get('/authenticate', (req, res) => {
    const cert = req.connection.getPeerCertificate()
...
});

https.createServer(opts, app).listen(9999)

Моя кнопка «Войти» запрашивает /authorize конечная точка, которая возвращает информацию о сертификате как JSON.

Как я могу спроектировать это приложение, чтобы сохранить текущую функциональность, но запрашивать сертификат клиента только после нажатия кнопки входа в систему?

1 Ответ

0 голосов
/ 02 июля 2020

Приложение React, которое я разрабатываю на работе, имеет аутентификацию CA C, но я сижу за apache и использую его для своего SSL-соединения и информации о сертификате. Если у вас есть возможность для этого, вы можете удалить требование SSL из express и поместить его перед своим приложением реакции и поместить что-то вроде фрагмента ниже в свой файл conf, а затем проксировать его обратно.

<If "%{REQUEST_URI} == '/authenticate' && %{REQUEST_METHOD} == 'POST'">
    SSLVerifyClient require
    SSLVerifyDepth  10

    RequestHeader set SSL_CLIENT_CN "%{SSL_CLIENT_S_DN_CN}s"

    SSLOptions +ExportCertData +StdEnvVars
</If>
...