0 Replies Latest reply on Aug 15, 2006 3:26 AM by Harry

    Extending Principal and using getCallerPrincipal()

    Harry Newbie


      I would like to ask a question about the stated topic.

      My case is like that:
      The SimplePrincipal originally shipped with JBoss is not enough to me, it contains only name, but I would like to add some more variables. Thus, I made my own MyPrincipal implementing java.security.Principal.

      public class MyPrincipal implements Principal, Serializable {

      Moreover, I have made a new MyLoginModule extending DatabaseServerLoginModule, this class overrides the createIdentity() method so that the Principal instance created must be of the class MyPrincipal.

      public class MyLoginModule extends DatabaseServerLoginModule {
      protected Principal createIdentity(String username) throws Exception {
      MyPrincipal p = null;
      if (principalClassName == null)
      p = new MyPrincipal(username);
      } else
      p = (MyPrincipal) super.createIdentity(username);
      return p;

      These classes run successfully, and I did check the Principal created after the login() method is an instance of MyPrincipal.

      Now, is the problem. Am I able to get this Principal in a Session Bean?

      Before I made the new Principal and LoginModule, I can get the Principal instance through its interface using the sessionContext.getCallerPrincipal() method. I checked the instance I got and it is of the default class type - SimplePrincipal.

      However, after I used the the new one - MyPrincipal, the result shows me the sessionContext.getCallerPrincipal() method also returns an instance of SimplePrincipal. Is this method points to the same Principal instance as the one I got in login()?

      If not, is there any method for me to get the instance created in login()?

      Thanks for your kindness and sincere help.