From: Madhu Venugopal Date: Thu, 11 Apr 2013 19:06:05 +0000 (-0700) Subject: Auth Principal to work with Remote authorization X-Git-Tag: releasepom-0.1.0~579 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=d4489fe02637f4cc5c5fd79f218b5ebe43dbe84c Auth Principal to work with Remote authorization Also added some helpful OSGi console commands for remote auth. Change-Id: I2c092cb73c7603acc2a2171e1d1fcc5669a9373d Signed-off-by: Madhu Venugopal --- diff --git a/opendaylight/security/src/main/java/org/opendaylight/controller/security/ControllerCustomRealm.java b/opendaylight/security/src/main/java/org/opendaylight/controller/security/ControllerCustomRealm.java index 43a41da824..f2e339f0c7 100644 --- a/opendaylight/security/src/main/java/org/opendaylight/controller/security/ControllerCustomRealm.java +++ b/opendaylight/security/src/main/java/org/opendaylight/controller/security/ControllerCustomRealm.java @@ -1,11 +1,13 @@ package org.opendaylight.controller.security; import java.security.Principal; +import java.util.ArrayList; import java.util.List; import org.apache.catalina.realm.GenericPrincipal; import org.apache.catalina.realm.RealmBase; import org.opendaylight.controller.sal.authorization.AuthResultEnum; +import org.opendaylight.controller.sal.authorization.UserLevel; import org.opendaylight.controller.sal.utils.ServiceHelper; import org.opendaylight.controller.usermanager.IUserManager; import org.slf4j.Logger; @@ -38,8 +40,11 @@ public class ControllerCustomRealm extends RealmBase { IUserManager userManager = (IUserManager) ServiceHelper .getGlobalInstance(IUserManager.class, this); if (userManager != null) { - final List roles = userManager.getUserRoles(username); - return new GenericPrincipal(username, getPassword(username), roles); + final List levels = new ArrayList(); + UserLevel level = userManager.getUserLevel(username); + if (level == null) level = UserLevel.NOUSER; + levels.add(level.toString()); + return new GenericPrincipal(username, "", levels); } else throw new RuntimeException("User Manager reference is null"); diff --git a/opendaylight/usermanager/src/main/java/org/opendaylight/controller/usermanager/internal/ServerConfig.java b/opendaylight/usermanager/src/main/java/org/opendaylight/controller/usermanager/internal/ServerConfig.java index 4ab0ae2b3b..649fee8f7f 100644 --- a/opendaylight/usermanager/src/main/java/org/opendaylight/controller/usermanager/internal/ServerConfig.java +++ b/opendaylight/usermanager/src/main/java/org/opendaylight/controller/usermanager/internal/ServerConfig.java @@ -29,6 +29,12 @@ public class ServerConfig implements Serializable { public ServerConfig() { } + public ServerConfig(String ip, String secret, String protocol) { + this.ip = ip; + this.secret = secret; + this.protocol = protocol; + } + public String getAddress() { return ip; } diff --git a/opendaylight/usermanager/src/main/java/org/opendaylight/controller/usermanager/internal/UserManagerImpl.java b/opendaylight/usermanager/src/main/java/org/opendaylight/controller/usermanager/internal/UserManagerImpl.java index 1bd323d38e..3e57ed846c 100644 --- a/opendaylight/usermanager/src/main/java/org/opendaylight/controller/usermanager/internal/UserManagerImpl.java +++ b/opendaylight/usermanager/src/main/java/org/opendaylight/controller/usermanager/internal/UserManagerImpl.java @@ -726,6 +726,39 @@ public class UserManagerImpl implements IUserManager, IObjectReader, ci.println(conf.getUser() + " " + conf.getRole()); } } + + public void _addAAAServer (CommandInterpreter ci) { + String server = ci.nextArgument(); + String secret = ci.nextArgument(); + String protocol = ci.nextArgument(); + + if (server == null || secret == null || protocol == null) { + ci.println("Usage : addAAAServer "); + return; + } + ServerConfig s = new ServerConfig(server, secret, protocol); + addAAAServer(s); + } + + public void _removeAAAServer (CommandInterpreter ci) { + String server = ci.nextArgument(); + String secret = ci.nextArgument(); + String protocol = ci.nextArgument(); + + if (server == null || secret == null || protocol == null) { + ci.println("Usage : addAAAServer "); + return; + } + ServerConfig s = new ServerConfig(server, secret, protocol); + removeAAAServer(s); + } + + public void _printAAAServers (CommandInterpreter ci) { + for (ServerConfig aaaServer : remoteServerConfigList.values()) { + String protocol = aaaServer.getProtocol(); + ci.println(aaaServer.getAddress() + "-" + aaaServer.getProtocol()); + } + } @Override public String getHelp() {