Клиент JBoss - проблема авторизации
От: alxt  
Дата: 04.02.09 11:22
Оценка:
Добрый день!
Есть JBoss 5RC2.
В нём есть EAR с EJB-jar'ом, в котором jboss.xml:
<jboss>
    <security-domain>java:/jaas/ASKUR</security-domain>
</jboss>

login-config.xml:
  <application-policy name = "ASKUR">
    <authentication>
      <login-module code = "ru.infosfera.auth.RolesLoginModule" flag = "required">
      </login-module>
    </authentication>
  </application-policy>


RolesLoginModule всех пускает, но всё записывает:

  public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String, ?> sharedState, Map<String, ?> options)
  {
    log.error("initialize...");
    for (String key: sharedState.keySet())
      log.error("   sharedState[" + key + "]=" + sharedState.get(key).toString());


С клиента коннекчусь:
    Hashtable<String, String> params = new Hashtable<String, String>();
    params.put(Context.PROVIDER_URL           , "jnp://localhost:1099");
    System.setProperty("java.security.auth.login.config","auth.conf");
    params.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.security.jndi.LoginInitialContextFactory");
    params.put(Context.SECURITY_PROTOCOL   , "EJB"); 
    params.put(Context.AUTHORITATIVE, "true");
    params.put(Context.SECURITY_PRINCIPAL, "root");
    params.put(Context.SECURITY_CREDENTIALS, "root");
    params.put("javax.security.auth.login.name", "root");
    params.put("javax.security.auth.login.password", "root");
    try{
      Context ctx = new InitialContext(params);
      Object obj = ctx.lookup("EJB/Auth/AuthContext");
      AuthContextRemote auth = (AuthContextRemote) PortableRemoteObject.narrow(obj, AuthContextRemote.class);
      System.out.println("Auth: " + auth.test());
...


auth.conf:

EJB { 
  org.jboss.security.ClientLoginModule required;
};


Так вот — в лог сервера попадает пустота — т.е. в sharedState пусто.
Вопрос- как передать информацию о логине на сервер?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.