Hi,

only now have I returned to this task. I get http error 500:

Exception constructing service 'RememberMeServices': Error invoking
service builder method
nu.localhost.tapestry5.springsecurity.services.SecurityModule.build(UserDetailsService,
String) (at SecurityModule.java:303) (for service
'RememberMeServices'): Service interface
org.springframework.security.userdetails.UserDetailsService is matched
by 2 services: UserDetailsWithOpenIDService,
UserDetailsWithUsernameAndPasswordService.  Automatic dependency
resolution requires that exactly one service implement the interface.

AppModule.java
===========
<snip>
    /* USERNAME, PASSWORD */
    public static UserDetailsService
buildUserDetailsWithUsernameAndPasswordService(@Inject PasswordEncoder
encoder, @Inject SaltSource salt) {
        return new UserDetailsWithUsernameAndPasswordService(encoder, salt);
    }

    /* OPENID */
    public static UserDetailsService buildUserDetailsWithOpenIDService() {
        return new UserDetailsWithOpenIDServiceImpl();
    }

    public static OpenIDAuthenticationProvider
buildOpenIDAuthenticationProvider(
            @InjectService("UserDetailsWithOpenIDService")
UserDetailsService userDetailsService) throws Exception {
        OpenIDAuthenticationProvider provider = new
OpenIDAuthenticationProvider();

        provider.setUserDetailsService(userDetailsService);
        provider.afterPropertiesSet();

        return provider;
    }

    public static void contributeProviderManager(
            OrderedConfiguration<AuthenticationProvider> configuration,
            @InjectService("OpenIDAuthenticationProvider")
            AuthenticationProvider openIdAuthenticationProvider,
            @InjectService("DaoAuthenticationProvider")
            AuthenticationProvider daoAuthenticationProvider) {

        configuration.add("openIDAuthenticationProvider",
openIdAuthenticationProvider);
        configuration.add("daoAuthenticationProvider",
daoAuthenticationProvider );
     }
</snip>

What is missing?

Cheers,
Borut

2008/11/6 Ulrich Stärk <[EMAIL PROTECTED]>:
> Just inject both providers into your contributeProviderManager method:
>
> public static void contributeProviderManager(
>        OrderedConfiguration<AuthenticationProvider> configuration,
>        @InjectService("OpenIDAuthenticationProvider")
>        AuthenticationProvider openIdAuthenticationProvider,
>        @InjectService("DaoAuthenticationProvider")
>        AuthenticationProvider daoAuthenticationProvider) {
>
>    configuration.add("openIDAuthenticationProvider",
> openIdAuthenticationProvider);
>    configuration.add("daoAuthenticationProvider", daoAuthenticationProvider
> );
> }
>
> Cheers,
>
> Uli
>
> Borut Bolčina schrieb:
>>
>> Hello,
>>
>> I need some help/guidelines in implementing a login with classic username
>> and password login and with openid.
>>
>> I am looking at
>> http://www.localhost.nu/svn/public/tapestry-spring-security-sample/ for
>> classic setup and
>> http://wiki.apache.org/tapestry/Tapestry5HowToSpringSecurityAndOpenId for
>> OpenID.
>>
>> My goal is to join them in one web app. Both of them work just fine
>> separately.
>>
>> Now this method in AppModule is where I am stuck:
>>
>>    public static void contributeProviderManager(
>>            OrderedConfiguration<AuthenticationProvider> configuration,
>>            @InjectService("OpenIDAuthenticationProvider")
>> AuthenticationProvider openIdAuthenticationProvider) {
>>
>>        configuration.add("openIDAuthenticationProvider",
>> openIdAuthenticationProvider);
>>    }
>>
>> The above method is part of
>>
>> http://www.localhost.nu/java/tapestry-spring-security/apidocs/nu/localhost/tapestry5/springsecurity/services/SecurityModule.html
>> .
>>
>> It allows only one authentication provider, but I need another one:
>>
>>    public static void contributeProviderManager(
>>        OrderedConfiguration<AuthenticationProvider> configuration,
>>        @InjectService( "DaoAuthenticationProvider" )
>>        AuthenticationProvider daoAuthenticationProvider ) {
>>
>>        configuration.add(
>>            "daoAuthenticationProvider",
>>            daoAuthenticationProvider );
>>    }
>>
>> How, if at all possible, do I configure my app with two authentication
>> providers?
>>
>> Cheers,
>> Borut
>>
>> P.S. I am new to T5 and T5's IoC.
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to