Thank you very much Jonathan, I found out a solution by myself after
debugging a little bit more:

In my SecurityModule, I added to the contributeProviderManager both
providers like this:

AuthenticationProvider daoAuth = (AuthenticationProvider)
applicationContext.getBean("authenticationProviderA");
configuration.add("authenticationProviderA", daoAuth);
AuthenticationProvider authenticationProviderB = (AuthenticationProvider)
applicationContext.getBean("authenticationProviderB");
configuration.add("authenticationProviderB", authenticationProviderB);

It looks very similar :)

Thank you very much for your time and your help!

Cheers!


On Tue, Nov 22, 2011 at 10:37 AM, Juan Alba <juan.a...@condortech.com.ar>wrote:

> First of all thanks for the help Jonathan, but I think that I am not being
> clear.
>
> I already have the two providers (Injecting the applicationcontext as
> derkoe told me before).
>
> Now I want to configure tapestry-spring-security to use both of them so
> that if the user is not authenticated with one provider, the application
> tries to authenticate it with the other provider.
>
> For example:
>
> An user fill in username and password, first it will try to authenticate
> with authenticationProviaderA. If the user is not authenticated, it will
> try to authenticate with authenticationProviderB (This can be ldap for
> example)
>
> Thanks in advacne.
>
> On Mon, Nov 21, 2011 at 5:31 PM, Jonathan Barker <
> jonathan.theit...@gmail.com> wrote:
>
>> Can you move the provider building out of Spring into your AppModule so
>> you
>> can actually specify a service id?
>>
>> Or, as suggested by Chris, pass ApplicationContext into your
>> contributeProviderManager method instead of AuthenticationProvider, and
>> then do appContext.getBean("myBeanId") to get a specific provider to
>> contribute.
>>
>> Or, you can get around it by having your AuthenticationProviders implement
>> different dummy interfaces that extend AuthenticationProvider.  Then, in
>> your contribute method, use your dummy interface instead of
>> AuthenticationProvider to avoid any confusion about which one you want.
>>
>>
>> On Mon, Nov 21, 2011 at 9:31 AM, Juan Alba <juan.a...@condortech.com.ar
>> >wrote:
>>
>> > Chris, thanks for the tip,
>> >
>> > What I am still missing is to assign more than one
>> authenticationProvider
>> > to the  ProviderManager.
>> >
>> > I can see there that it is a List of providers, but I don't know how to
>> set
>> > this list with all my different authenticationProviders.
>> >
>> > Does anybody knows?
>> >
>> >
>> > Thanks in advance!
>> >
>> > On Mon, Nov 21, 2011 at 5:20 AM, derkoe <
>> > tapestry.christian.koeb...@gmail.com> wrote:
>> >
>> > >
>> > > kado wrote
>> > > >
>> > > > Hi,
>> > > >
>> > > > I am trying to add a facebook provider to my app.
>> > > >
>> > > > I added the config to the xml and I had created the  Class
>> > > > FacebookDaoProvider just for testing if everything goes fine but
>> when I
>> > > > start the server this message is shown:
>> > > >
>> > > > Construction of service ProviderManager failed: Error invoking
>> service
>> > > > builder method
>> > > >
>> > >
>> >
>> nu.localhost.tapestry5.springsecurity.services.SecurityModule.buildProviderManager(List)
>> > > > (at SecurityModule.java:333) (for service 'ProviderManager'): Error
>> > > > invoking service contribution method
>> > > >
>> > >
>> >
>> ar.com.condor.services.CondorSecurityModule.contributeProviderManager(OrderedConfiguration,
>> > > > AuthenticationProvider): Spring context contains 2 beans assignable
>> to
>> > > > type
>> > > > org.springframework.security.providers.AuthenticationProvider:
>> > > > daoAuthenticationProvider, facebookDaoProvider.
>> > > >
>> > > > Does anybody know what I am missing or what I am doing wrong?
>> > > >
>> > >
>> > > The problem is that you have 2 Spring beans binding the same type
>> > > (AuthenticationProvider) - Tapestry's injection is based on types, so
>> it
>> > > cannot determine which service to inject.
>> > >
>> > > For a solution you can either eliminate one of the two Spring beans or
>> > > inject ApplicationContext and get the bean manually.
>> > >
>> > > --
>> > > Chris
>> > >
>> > > --
>> > > View this message in context:
>> > >
>> >
>> http://tapestry.1045711.n5.nabble.com/Spring-security-can-t-add-AuthenticationProvider-tp5005539p5009797.html
>> > > Sent from the Tapestry - User mailing list archive at Nabble.com.
>> > >
>> > > ---------------------------------------------------------------------
>> > > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> > > For additional commands, e-mail: users-h...@tapestry.apache.org
>> > >
>> > >
>> >
>>
>>
>>
>> --
>> Jonathan Barker
>> ITStrategic
>>
>
>

Reply via email to