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 <[email protected]>
wrote:
>
> On 26-Aug-2014, at 11:47 am, Sebastien Goasguen <[email protected]> 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 | [email protected]
> 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.
>