Have you had a look at the jaas stuff in Karaf: https://svn.apache.org/repos/asf/felix/trunk/karaf/jaas
You can deploy JAAS configuration dynamically without any change on the client side. On Mon, May 11, 2009 at 17:42, derekv <[email protected]> wrote: > > I am trying to use jaas in my osgi proxy server application. I would like the > proxy authorization to be done with jaas. I would like to keep track of what > LoginModules are available, so, the user would be able to pick from a list > of classes that implement the LoginModule interface. Here is my problem > though. > > a) User picks a LoginModule to use. > b) App sets up the Configuration so that the LoginModule class choosen > matches to the AppName. (This is the way that jaas does it.) > c) Then when its time to validate a proxy request, I use the new > LoginContext(appName, callbackhandler).login() as jaas specifies. > d) It fails, because it looks like LoginContext.login() does a > Class.forName(loginModuleClassName) and the class of the LoginModule is not > imported/known to the calling bundle. > > So, how can i make it work with an existing class that loads up classes by > name, and is not going to know what there name is ahead of time, and the > bundle cant import them because it wont know ahead of time what they are > going to be. > > > > I tried to create an interface something like this: > > public interface Authenticator { > public void authenticate(String name, String pass); > } > > This way, i was hoping, i could create a bundle that could call the > following code: > > new LoginContext(appName, loginModuleClassName).login() > > and this bundle would know about the loginModuleClassName. I could then > place the .jar file of the loginModuleClassName and place it in the bundle, > and reference it on the Bundle-ClassPath. Then the main bundle that calls > the Authenticator should be able to just call authenticate() without knowing > what underlying classes were doing the work. But, this didnt work either. It > gives me an error of unable to find LoginModule: blah.blah.blah.Blah. I put > the code "Class.forName(loginModuleClassName)" right inside the > authenticate() method and that worked fine with no errors. So the bundle can > access that class just fine. > > I am kinda at a loss as to how to make this work. In summary, I would like > to have one "Main" bundle that uses jaas, and some "child" bundles that > implement the LoginModule interface and are called by the "Main" bundle. > But, the way that LoginContext is coded, it uses Class.forName() and that > breaks everything. > > any ideas? > > thanks. > > -- > View this message in context: > http://www.nabble.com/osgi-and-jaas-tp23485885p23485885.html > Sent from the Apache Felix - Users mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > -- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/ ------------------------ Open Source SOA http://fusesource.com --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

