Springframework UserDetailsService ошибка - PullRequest
1 голос
/ 02 июня 2011

Я пытаюсь создать свой собственный UserDetailsService с помощью Spring Framework.

Я создал следующий простой класс, но получаю сообщение об ошибке: Cannot convert value of type [com.mycompany.project.MyDetailsService] to required type org.springframework.security.core.userdetails.UserDetailsService]

Полный класс:

package com.mycompany.myproject;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.dao.DataAccessException;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;


public class MyDetailsService implements UserDetailsService{
    private static final Log log = LogFactory.getLog(MyDetailsService.class);

    @Override
    public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException, DataAccessException {        
        return null; //It'll do something here later
    }
}

Я могу включить стек заполненияпроследить, если это полезно.Он просто длинный и не умещается в поле, поэтому здесь полный текст сообщения об ошибке перед трассировкой стека.

28542 [main] ERROR StackTrace - Очистка трассировки стека: org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем org.springframework.security.authentication.ProviderManager # 0 ': невозможно создать внутренний бин (внутренний бин) типа [org.springframework.security.config.authentication.AuthenticationManagerFactoryBee]при установке свойства bean 'parent';вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем '(внутренний компонент) # 15': FactoryBean вызвал исключение при создании объекта;вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем 'org.springframework.security.authenticationManager': невозможно разрешить ссылку на компонент 'casAuthenticationProvider' при установке свойства компонента 'поставщики' с ключом [0];вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'casAuthenticationProvider', определенным в файле [/usr/share/jetty/resources/OWFsecurityContext.xml]: инициализация компонента не выполнена;вложенным исключением является org.springframework.beans.ConversionNotSupportedException: не удалось преобразовать значение свойства типа 'com.mycompany.myproject.MyDetailsService' в требуемый тип 'org.springframework.security.core.userdetails.UserDetailsService' user 'Вложенное исключение - java.lang.IllegalStateException: невозможно преобразовать значение типа [com.mycompany.project.MyDetailsService] в новый тип [org.springframework.security.core.userdetails.UserDetailsService] для свойства 'userDetailsSeritor':найдена стратегия

Контекст безопасности:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:sec="http://www.springframework.org/schema/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">
    <sec:http entry-point-ref="casProcessingFilterEntryPoint">
        ...
    </sec:http>

    <sec:authentication-manager alias="authenticationManager">
        <sec:authentication-provider ref="casAuthenticationProvider" />
    </sec:authentication-manager>

    <bean id="casProcessingFilter" class="org.springframework.security.cas.web.CasAuthenticationFilter">
        <property name="authenticationManager" ref="authenticationManager" />
        <property name="authenticationFailureHandler">
            <bean
                class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler">
                <property name="defaultFailureUrl" value="/cas_failed.jsp" />
            </bean>
        </property>
        <property name="proxyGrantingTicketStorage" ref="proxyGrantingTicketStorage" />
        <property name="proxyReceptorUrl" value="/secure/receptor" />
    </bean>

    <bean id="casProcessingFilterEntryPoint"
        class="org.springframework.security.cas.web.CasAuthenticationEntryPoint">
        <property name="loginUrl" value="..." />
        <property name="serviceProperties" ref="serviceProperties" />
    </bean>

    <bean id="casAuthenticationProvider"
        class="org.springframework.security.cas.authentication.CasAuthenticationProvider">
        <property name="userDetailsService" ref="userService" />
        <property name="serviceProperties" ref="serviceProperties" />
        <property name="ticketValidator" ref="ticketValidator" />
        <property name="key" value="an_id_for_this_auth_provider_only" />
    </bean>

    <bean id="ticketValidator"
        class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">
        <constructor-arg index="0" value="..." />
        <property name="proxyGrantingTicketStorage" ref="proxyGrantingTicketStorage" />
        <property name="proxyCallbackUrl"
            value="..." />
    </bean>

    <bean id="proxyGrantingTicketStorage"
        class="org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl" />

    <bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties">
        <property name="service"
            value="..." />
        <property name="sendRenew" value="false" />
    </bean>


    <bean id="userService" class="com.mycompany.myproject.MyDetailsService" >
    </bean>

    ...
</beans>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...