Взаимная аутентификация на Tomcat 7 и request.getUserPrincipal () - PullRequest
2 голосов
/ 05 февраля 2012

Я пытаюсь настроить взаимную аутентификацию в приложении Tomcat 7.Мой server.xml имеет следующий соединитель:

 <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
        port="8443" 
        enableLookups="true"
        acceptCount="100" 
        connectionTimeout="20000"
        useURIValidationHack="false" 
        disableUploadTimeout="true"
        scheme="https" 
        secure="true" 
        SSLEnabled="true"
        keystoreFile="servercert.jks"
        keystorePass="password"
        truststoreFile="truststore.jks"
        truststorePass="password"
        clientAuth="true" 
        sslProtocol="TLS" />

Когда я пытаюсь выполнить действие распорок, используя URL-адрес, аналогичный "https://testserver:8443/myapp/LoadUser.do",, браузер запрашивает сертификат клиента. Когда я предоставляюсертификат, которому доверяет мой сервер, кажется, что он аутентифицируется очень хорошо. На стороне сервера я ожидаю получить общее имя сертификата клиента, вызвав request.getUserPrincipal (), но это просто ноль.getUserPrincipa () должен быть установлен в CN? Если да, что я делаю неправильно / отсутствует. Если нет, как я могу получить CN на стороне сервера?

Спасибо.

1 Ответ

4 голосов
/ 06 февраля 2012

Я выглядел не в том месте, как манекен. Я получаю всю информацию о сертификате из запроса:

request.getAttribute(org.apache.catalina.Globals.CERTIFICATES_ATTR);
...