2009-05-18 3 views
3

J'essaie de rechercher un EJB à partir d'une application Java autonome. Je pense à WebSphere Application Server 6.1, mais si quelqu'un sait comment faire cela pour un autre serveur d'application, cela peut me mener dans la bonne direction.Comment préformer une recherche EJB avec la sécurité de l'application?

Ce que je suis en train de faire:

 initialContext= new InitialContext(env); 
    initialContext.lookup(""); 

    lc = new LoginContext("WSLogin", new WSCallbackHandlerImpl("wasadmin", "defaultWIMFileBasedRealm", "wasadmin")); 
    lc.login(); 
    subject = lc.getSubject(); 
    WSSubject.setRunAsSubject(subject); 

Ce ne fonctionne pas ... mon sujet est encore «/UNAUTHENTICATED », et je reçois une erreur lorsque je tente de rechercher l'EJB. Je également les paramètres spécifiant suivants à la machine virtuelle lors de l'exécution de l'application:

-Dcom.ibm.CORBA.ConfigURL = "C: \ \ était profils \ AppSrv01 \ propriétés \ sas.client.props" -Djava .security.auth.login.config = "C: \ was \ profiles \ AppSrv01 \ propriétés \ wsjaas_client.conf"

Répondre

1

Pour WebSphere 6, essayait d'accéder à un EJB sécurisé à partir d'une servlet (WAR-RESTful Jersey) également déployé dans le même WebSphere; Voici le code qui fonctionne

 Properties prop = new Properties(); 

    prop.put("org.omg.CORBA.ORBClass", "com.ibm.CORBA.iiop.ORB"); 
    prop.put("java.naming.factory.initial", "com.ibm.websphere.naming.WsnInitialContextFactory"); 
    prop.put("java.naming.provider.url", "corbaloc:iiop:localhost:9810"); 
    prop.put("com.ibm.CORBA.securityEnabled", "true"); 
    prop.put("com.ibm.CORBA.validateBasicAuth", "true"); 


    Context ctx; 
    try { 
     ctx = new InitialContext(prop); 

     System.out.println("Resolved Inital Context"); 
     Object ejbHome = ctx.lookup(""); 
     System.out.println("Resolved Home OperationManagerEJB"); 
     logger.info("So far so good, tryining to Login "); 
     LoginContext lc; 
     lc = new LoginContext("WSLogin",new WSCallbackHandlerImpl("username","password")); 
     lc.login(); 

     logger.info("Login Suceeded with omc_user"); 
     WSSubject.setRunAsSubject(lc.getSubject()); //This is one key call 
     logger.info("Setting the authorization sibject"); 

Références

http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=%2Fcom.ibm.websphere.express.doc%2Finfo%2Fexp%2Fae%2Frtrb_secprobs.html

http://pic.dhe.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=%2Fcom.ibm.websphere.express.doc%2Finfo%2Fexp%2Fae%2Fxsec_jaas.html

http://pic.dhe.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=%2Fcom.ibm.websphere.express.doc%2Finfo%2Fexp%2Fae%2Fxsec_jaas.html

Questions connexes