2014-01-13 3 views
0

Я использую spring-security-kerberos для аутентификации удаленных пользователей - это хорошо работает. Проблема, которая у меня есть, заключается в том, что иногда пользователи не имеют билет на кеберокс на месте, и мне нужно использовать другую форму аутентификации. Для этой цели я написал собственный поставщик аутентификации (myCusomAuthenticationProvider). Этот пользовательский поставщик должен попросить пользователя для аутентификации BASIC и использовать несколько серверов LDAP для аутентификации пользователя на основе имени пользователя и пароля.Комбинируйте собственный фильтр проверки подлинности с помощью spring-security-kerberos

Проблема, которую я вижу, заключается в том, что мой пользовательский менеджер аутентификации всегда получает KerberosServiceRequestToken в качестве токена аутентификации, и мне не удается получить UsernamePasswordAuthenticationToken. Как заставить сервер возвращать браузеру «Переговоры» и «Основные» методы, а мой собственный провайдер обрабатывает базовую аутентификацию?

Я нашел способ сделать это с некоторыми изменениями кода Spring-security-kerberos, но я пытаюсь найти лучший способ сделать это.

web.xml: http://pastebin.com/embed.php?i=ZidnBMwZ

корневой контекст-с krb.xml: http://pastebin.com/c8vfUZfV

ответ

1

Этот ответ поможет вам Optional kerberos authentication

И если вы нуждаетесь больше обычая, а затем расширяет KerberosAuthenticationProvider по вашему классу MyCustomAuthenticationProvider и вставьте его в класс:

<bean id="kerberosAuthenticationProvider" class="com.test.MyCustomAuthenticationProvider"> 
    <property name="kerberosClient"> 
     <bean class="org.springframework.security.extensions.kerberos.SunJaasKerberosClient"> 
      <property name="debug" value="${krb.debug}"/> 
     </bean> 
    </property> 
    <property name="userDetailsService" ref="dummyUserDetailsService"/> 
</bean> 
+0

Спасибо за информацию! – nambar

+0

@nambar ответ не ясен или не так? – 0x5a4d