Как вы преобразуете поиск EJB с безопасностью приложения? - PullRequest
3 голосов
/ 18 мая 2009

Я пытаюсь найти EJB из отдельного Java-приложения. Я имею в виду WebSphere Application Server 6.1, но если кто-то знает, как это сделать для другого сервера приложений, это может привести меня в правильном направлении.

Что я сейчас делаю:

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

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

Это не работает ... моя тема все еще "/ UNAUTHENTICATED", и я получаю сообщение об ошибке при попытке поиска EJB. Я также указываю следующие параметры для виртуальной машины при выполнении приложения:

-Dcom.ibm.CORBA.ConfigURL = "C: \ был \ Profiles \ AppSrv01 \ свойства \ sas.client.props" -Djava.security.auth.login.config = "C: \ был \ Profiles \ AppSrv01 \ свойства \ wsjaas_client.conf"

1 Ответ

1 голос
/ 10 декабря 2012

В WebSphere 6 пытался получить защищенный EJB-компонент из сервлета (Jersey-RESTful WAR), также развернутого в той же WebSphere; Вот код, который работает

     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");

Ссылки

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

...