У меня есть HAProxy в качестве обратного прокси для моего приложения с аутентификацией x509. HAProxy выполняет проверку X509 (на основе сертификата клиента) и добавляет сертификат обратно в заголовок запроса SSL_CLIENT_CERT
. Теперь я хочу идентифицировать пользователя по сертификату с помощью Keycloak. У меня есть поток аутентификации Keycloak, как указано в do c, и моя конфигурация haproxy выглядит следующим образом:
frontend http-frontend
bind *:8888
bind *:8888 transparent ssl crt /etc/x509/https/haproxy.pem ca-file /etc/x509/https/myCA.pem verify required
http-request redirect scheme https if !{ ssl_fc }
http-request set-header SSL_CLIENT_CERT %[ssl_c_der,base64]
default_backend app1
backend app1
server server1 host.docker.internal:8443/auth/realms/ng/protocol/openid-connect/auth ssl verify none
- Каким должен быть URL-адрес Keycloak, который будет перенаправляться с HAProxy?
- Обязателен ли заголовок
CERT_CHAIN
(если да, то как его получить. Ssl_c_der содержит сертификат сервера с эмитентом. Должен ли я разделить их?) - После извлечения пользователя Keycloak будет перенаправлять на URL в клиенте. Если да, как мне указать имя клиента в HAProxy?
- Какие должны быть настройки для этого c `client '? (oidc / public / standard-flow)
- Как приложение получит токен доступа после перенаправления?
Я также пытался перенаправить запрос в веб-приложение из HAProxy и попробуйте войти в систему через поток кода авторизации. Но Keycloak выдает ошибку, возможно, потому, что у меня только x509 username form execution
в пользовательском потоке аутентификации браузера.