diff options
| author | Manuel Traut <manut@linutronix.de> | 2009-11-21 19:13:19 +0100 |
|---|---|---|
| committer | Manuel Traut <manut@linutronix.de> | 2009-11-21 19:13:19 +0100 |
| commit | 1fc571e228fd4d483fa82c74c6ea059c7adbfde7 (patch) | |
| tree | 405fcad00bd1f20c6f0bdef6a9dc0375a32b7036 /src/YalpServer/AuthPluginHandler.java | |
| parent | 089a599fcf2ecca3d1581a12cd7521aaca6a0b0b (diff) | |
Auth: fixed Authentication handling
- on server side, iterate through registrated auth plugins for any request
- auth pg sql plugin, moved parts of old rmi based code, to new corba layout
- remove of plugins not implemented yet
- changing user details not implemented yet
Signed-off-by: Manuel Traut <manut@mecka.net>
Diffstat (limited to 'src/YalpServer/AuthPluginHandler.java')
| -rw-r--r-- | src/YalpServer/AuthPluginHandler.java | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/YalpServer/AuthPluginHandler.java b/src/YalpServer/AuthPluginHandler.java new file mode 100644 index 0000000..1011b69 --- /dev/null +++ b/src/YalpServer/AuthPluginHandler.java @@ -0,0 +1,58 @@ +package YalpServer; + +import java.util.ArrayList; + +import org.apache.log4j.Logger; +import org.apache.log4j.PropertyConfigurator; + +import YalpInterfaces.*; + +public class AuthPluginHandler { + + private ArrayList<AuthPlugin> plugins; + private static int auth_ids = 0; + + private String log4jFile = "log4j_server.conf"; + + private static Logger logger = + Logger.getLogger("Yalp.Server.AuthPluginHandler"); + + public AuthPluginHandler() { + PropertyConfigurator.configureAndWatch(log4jFile); + logger.debug("AuthPluginHandler()"); + plugins = new ArrayList<AuthPlugin>(); + } + + public PluginInfo addPlugin(AuthPlugin plugin) + { + logger.debug("addPlugin("+plugin.info.name+")"); + plugin.info.id = auth_ids++; + plugins.add(plugin); + return plugin.info; + } + + Session logon( String userName, + String password, + String ipAddress, + SessionHolder session, + YalpErrorHolder err ) + { + YalpUserHolder user = new YalpUserHolder(); + PluginInfo[] p = {}; + + for (AuthPlugin plugin : plugins) + { + plugin.itf.userVerify(userName, password, err, user); + if (err.value.code == YalpErrorCode.OK) + { + session.value = new Session (auth_ids++, user.value, ipAddress, p); + return session.value; + } + } + + /* user not accepted return dummy objects (null causes segfault in corba) */ + YalpUser no_user = new YalpUser(-1, "", "", AccessRights.DENY); + Session s = new Session (-1, no_user, "0.0.0.0", p); + return s; + } +} |
