2013-04-21 3 views
2

Я немного новичок в Spring и новичок в аутентификации SSL.mix-mode X509 Аутентификация с весной 3.1

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

Что я сделал до сих пор.

  1. SSL позволяет Tomcat (я могу получить доступ к https://mydomain.com:9443)
  2. сертификата клиента импорта для сервера доверенного
  3. Изменить сервер-XML и сделать clientAuth = "хочет" в моем server.xml

     
    Connector port="9443" 
    protocol="HTTP/1.1" 
    SSLEnabled="true" 
    maxThreads="150" 
    scheme="https" 
    secure="true" 
    clientAuth="want" 
    sslProtocol="TLS" 
    keystoreFile="c:\serverkeystore" 
    keystorePass="ChangeIt" /> 
    
  4. Добавлено x509 subject-princip-regex = "CN = (. *?)," User-service-ref = "customUserDetailService" под http в моей безопасности-context.xml

    < http auto-config="true" use-expressions="true" > 
        < x509 subject-principal-regex="CN=(.?)," user-service-ref="myUserDetailService" /> 
        < intercept-url pattern="/upload" requires-channel="https" /> 
        < intercept-url pattern="/*" access="hasRole('ROLE_USER')" /> 
        < form-login login-page="/login.jsp" 
           default-target-url="/index.jsp"
    authentication-failure-url="/login.jsp?error=1" /> < logout logout-url="/j_spring_security_logout" logout-success-url="/loggedout.jsp" delete-cookies="JSESSIONID"/>

  5. добавить < перехватывать-шаблон URL = "/ закачивать" требует-канал = "HTTPS" /> для защиты URL-адрес
  6. myUserDetailService осуществляет UserDetailsService и возвращает объект UserDetails (тот же класс, который я использую для проверки подлинности на основе форм, на основе сохраненного имени пользователя, пароля, ROLES).

Моя проблема в том, что когда-либо путь URL (даже с/upload) всегда показывает мне страницу login.jsp.

Я использую Spring и Spring Security 3.1.3 с котом 6.0.35

Любая помощь будет высоко ценится.

+0

@ Michael Извините, я еще не мог попробовать, так как мы были заняты другими проблемами. Сделаю, как только смогу. – Ish

+0

Удалось ли вам проверить это? – Michael

ответ

2

Вы должны отделить проблемы:

  1. Authenticate по проверке подлинности сертификата клиента всех /upload адреса
  2. AUTHENTICATE по отпечатку формы других URL-адрес

Следующая конфигурация позволит решить эти проблемы отдельно SpringSecurity 3.1:

<http pattern="/upload/**" > 
    <intercept-url pattern="/*" access="hasRole('ROLE_USER')" requires-channel="https"/> 
    <x509 subject-principal-regex="CN=(.?)," user-service-ref="myUserDetailService" /> 
</http> 

<http use-expressions="true"> 
    <intercept-url pattern="/login.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY"/> 
    <intercept-url pattern="/**" access="ROLE_USER"/> 
    <form-login login-page="/login.jsp" 
      default-target-url="/index.jsp" 
      authentication-failure-url="/login.jsp?error=1" /> 
    <logout logout-url="/j_spring_security_logout" logout-success-url="/loggedout.jsp" delete-cookies="JSESSIONID"/> 
</http> 
+0

Попробуем это Майкл. Благодаря! – Ish

Смежные вопросы