Взаимная аутентификация TLS в Apache — Как получить имя пользователя, прошедшего проверку подлинности пользователя

#apache #authentication #ssl

#apache #аутентификация #ssl

Вопрос:

Я настроил взаимную аутентификацию TLS на моем сервере Apache. Сервер теперь принимает вызовы, только если они указывают сертификат, подписанный центром сертификации, который я добавил в Apache.

Все работает, но теперь мне нужно использовать эту конфигурацию для фактической аутентификации пользователя: Apache используется для прокси (через ajp) запросов к java-приложению. Это java-приложение ожидает имя пользователя в предопределенном параметре заголовка.

Есть ли способ настроить Apache на получение имени пользователя из сертификата и автоматическую установку ожидаемого параметра заголовка?

Комментарии:

1. Сервер теперь принимает вызовы, только если they указан сертификат. Кто такое they в вашем случае другое java-приложение? и возможно ли изменить поведение / логику клиента? Также возможно ли изменить поведение сервера java app is expectin& the username in a header. Я спрашиваю об этом, потому что вместо передачи имени пользователя в заголовке IETF определила стандартный способ передачи данных клиента через прокси на главный сервер. Ссылка: tools.ietf.or&/id /…

Ответ №1:

Для этого вы можете использовать SSLUserName mod_ssl или mod_auth_basics AuthBasicFake.

Мне никогда не нравилось последнее, потому что вместо того, чтобы просто выступать в качестве поставщика аутентификации, оно заставляет вас устанавливать фиктивный пароль, а затем позволять реальному модулю аутентификации проверять его.

Другим вариантом является этот сторонний модуль, который, как и AuthBasicFake для конкретного сертификата, не содержит пароля: https://&ithub.com/covener/apache-modules/blob/master/mod_authn_cert.c