2012-02-05 2 views
1

Tomcat 7 앱에서 상호 인증을 설정하려고합니다.Tomcat 7 및 request.getUserPrincipal()의 상호 인증

<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"다음, 나는이 메시지가 표시하고 내 server.xml에 다음과 같은 커넥터가 있습니다 클라이언트 인증서 용 브라우저. 내 서버에서 신뢰할 수있는 인증서를 제공하면 정상적으로 인증 된 것으로 보입니다. 서버 측에서는 request.getUserPrincipal()을 호출하여 클라이언트 인증서의 Common Name을 얻으려고하지만 null 일뿐입니다. getUserPrincipa()가 CN으로 설정되어야한다고 가정하면 맞습니까? 그렇다면, 내가 뭘 잘못하고 있었는지 실종하고 있습니다. 아니요, 서버 측에서 CN을 검색하려면 어떻게해야합니까?

감사합니다.

답변

2

나는 더미 같은 잘못된 장소를 찾고있었습니다. 요청에서 모든 인증서 정보를받습니다.

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