I'm trying use your implementation to implement OAuth2. It's almost working, but I think is necessary a little change:
Class APIAuthenticationManagerImpl is calling command without correct spring context. I'm working in 4.3 branch, so, I will show what I changed: - org.apache.cloudstack.api.auth.PluggableAPIAuthenticator needs to implements PluggableService and have no more method getAuthCommands. - Little patch in APIAuthenticationManagerImpl +++ b/server/src/com/cloud/api/auth/APIAuthenticationManagerImpl.java @@ -55,24 +55,31 @@ public class APIAuthenticationManagerImpl extends ManagerBase implements APIAuth @Override public boolean start() { s_authenticators = new HashMap<String, Class<?>>(); - for (Class<?> authenticator: getCommands()) { - APICommand command = authenticator.getAnnotation(APICommand.class); - if (command != null && !command.name().isEmpty() - && APIAuthenticator.class.isAssignableFrom(authenticator)) { - s_authenticators.put(command.name(), authenticator); + for (Class<?> authenticatorCommand: getCommands()) { + registerCommandsInAPIAuthenticator(authenticatorCommand); + } + // Register all external APIAuthenticator(s) + for (PluggableAPIAuthenticator apiAuthenticator: _apiAuthenticators) { + for (Class<?> authenticatorCommand: apiAuthenticator.getCommands()) { + registerCommandsInAPIAuthenticator(authenticatorCommand); } } return true; } + private void registerCommandsInAPIAuthenticator(Class<?> authenticator) { + APICommand command = authenticator.getAnnotation(APICommand.class); + if (command != null && !command.name().isEmpty() + && APIAuthenticator.class.isAssignableFrom(authenticator)) { + s_authenticators.put(command.name(), authenticator); + } + } + @Override public List<Class<?>> getCommands() { List<Class<?>> cmdList = new ArrayList<Class<?>>(); cmdList.add(DefaultLoginAPIAuthenticatorCmd.class); cmdList.add(DefaultLogoutAPIAuthenticatorCmd.class); - for (PluggableAPIAuthenticator apiAuthenticator: _apiAuthenticators) { - cmdList.addAll(apiAuthenticator.getAuthCommands()); - } return cmdList; } Now, authentication commands work inside plugin context. PluggableAPIAuthenticator needs to implement tradicional getCommands to work. Best regards, Silvano Buback On Tue, Aug 26, 2014 at 6:59 AM, Rohit Yadav <rohit.ya...@shapeblue.com> wrote: > > On 26-Aug-2014, at 11:47 am, Sebastien Goasguen <run...@gmail.com> wrote: > > we do have some selenium tests in /test/selenium but I don't think they > are being run. > > > > +1 from me (satisfied with your answers) > > Thanks! Few more classes; > > Class, %Method, %Line, % > GetServiceProviderMetaDataCmd100% (1/ 1)62.5% (5/ 8)77.9% (53/ 68) > SAMLMetaDataResponse100% (1/ 1)66.7% (2/ 3)80% (4/ 5) > > From IntelliJ: http://people.apache.org/~bhaisaab/samlcoverage.png > > Regards, > Rohit Yadav > Software Architect, ShapeBlue > M. +41 779015219 | rohit.ya...@shapeblue.com > Blog: bhaisaab.org | Twitter: @_bhaisaab > > > > Find out more about ShapeBlue and our range of CloudStack related services > > IaaS Cloud Design & Build< > http://shapeblue.com/iaas-cloud-design-and-build//> > CSForge – rapid IaaS deployment framework<http://shapeblue.com/csforge/> > CloudStack Consulting<http://shapeblue.com/cloudstack-consultancy/> > CloudStack Infrastructure Support< > http://shapeblue.com/cloudstack-infrastructure-support/> > CloudStack Bootcamp Training Courses< > http://shapeblue.com/cloudstack-training/> > > This email and any attachments to it may be confidential and are intended > solely for the use of the individual to whom it is addressed. Any views or > opinions expressed are solely those of the author and do not necessarily > represent those of Shape Blue Ltd or related companies. If you are not the > intended recipient of this email, you must neither take any action based > upon its contents, nor copy or show it to anyone. Please contact the sender > if you believe you have received this email in error. Shape Blue Ltd is a > company incorporated in England & Wales. ShapeBlue Services India LLP is a > company incorporated in India and is operated under license from Shape Blue > Ltd. Shape Blue Brasil Consultoria Ltda is a company incorporated in Brasil > and is operated under license from Shape Blue Ltd. ShapeBlue SA Pty Ltd is > a company registered by The Republic of South Africa and is traded under > license from Shape Blue Ltd. ShapeBlue is a registered trademark. >