Voce estah usando JBoss?

No JBoss, o roles.properties e users.properties sao arquivos usandos pelo
*servidor*, quando o dominio de seguranca que carrega o
UsersRolesLoginModule � usado. Por default, esse dominio � chamado de
"other" (procure em server/lib/login-config.xml onde h� v�rios dominios - ou
application-policies - definidos). No seu jboss.xml (e/ou jboss-web.xml)
deve ter uma linha que informa o security domain como sendo java:/jaas/other
(ou outro nome, ja que o JBoss automaticamente redireciona para "other",
nomes de dominio desconhecidos).

Pelo erro parece que o seu cliente nao encontrou o arquivo de configuracao.
Voce nao precisa de users.roles ou similar no cliente. O que tem que estar
disponivel eh um arquivo com informa��es de autentica��o. Deve conter  algo
como:

dominio-login-cliente {
   // JBoss LoginModule implementation
   org.jboss.security.ClientLoginModule  required;
};

para que voce tenha acesso ao LoginModule default do cliente (a nao ser que
voce tenha escrito um). No seu codigo, em algum lugar, voce deve estar se
referindo a esse dominio ao criar seu LoginContext:

LoginContext loginCtx = new LoginContext("dominio-login-cliente",
seuHandler);

e para que seu cliente saiba onde encontrar o arquivo, voce deve informa-lo
atraves da propriedade JVM java.security.auth.login.config, que pode ser
carregado via Properties.

UserRolesLoginModule eh legal se voce tem um banco de usuarios que nunca
muda. Se precisar criar novos usuarios ou altera-los, ele eh ruim. Mexer em
arquivos eh complicado e mais ainda se estiver usando EJB. Por que voce nao
usa o banco de dados nativo do JBoss para guardar nome/senha em vez dos
arquivos user.properties e roles.properties? Usando o banco, fica mais facil
de cadastrar novos usuarios. E eh simples de configurar.

Primeiro, crie no HSQLDB uma tabela. Pode ser uma so e bem simples, por
exemplo:

create table usuarios (
    id varchar(8) primary key,
    senha varchar(16),
    grupo varchar(16)
);

Depois, acrescente no login-config.xml um novo dominio:

<application-policy name="dominio-login-servidor">
    <authentication>
       <login-module
code="org.jboss.security.auth.spi.DatabaseServerLoginModule"
flag="required">
          <module-option name="dsJndiName">java:/DefaultDS</module-option>
          <module-option name="principalsQuery">select senha from usuarios
where id=?</module-option>
          <module-option name="rolesQuery">select grupo, 'Roles' from
usuarios where id=?</module-option>
          <module-option
name="unauthenticatedIdentity">nobody</module-option>
       </login-module>
    </authentication>
 </application-policy>

e use o dominio acima no seu jboss.xml. Se decidir usar mais de uma tabela
(uma separada para grupos, por exemplo) ou nomes de comula ou tabela
diferentes, nao se esqueca de mudar as duas ultimas <module-option> que
contem os queries necessarios para que o JBoss recupere a senha e o role,
respectivamente.

Com esta configura��o, o JBoss usar� a tabela usu�rios para autenticar
usuarios e descobrir os perfis (roles) atraves da coluna grupo, e voce pode
escrever um Entity Bean mapeado a tabela usuarios para poder gerencia-los.

Helder.

--
Helder da Rocha ([EMAIL PROTECTED])
Web Consultant
www.argonavis.com.br
S�o Paulo, Brazil
+55 (11) 3044 4398
+55 (11) 9291 0567

----- Original Message -----
From: "Maiquel Sampaio de Melo" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, May 28, 2003 6:23 AM
Subject: [enterprise-list] Erro JAAS


> Alguem pode me dar uma dica do que pode estar
> ocasionando esse erro?
>
> Exception in thread "main"
> java.lang.SecurityException: Unable to locate a login
> configuration
>         at
> com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:97)
>         at
> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
>         at
>
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAcces
sorImpl.java:
> 39)
>         at
>
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstruc
torAccessorIm
> pl.java:27)
>         at
> java.lang.reflect.Constructor.newInstance(Constructor.java:274)
>         at
> java.lang.Class.newInstance0(Class.java:296)
>         at java.lang.Class.newInstance(Class.java:249)
>         at
> javax.security.auth.login.Configuration$3.run(Configuration.java:221)
>         at
> java.security.AccessController.doPrivileged(Native
> Method)
>         at
>
javax.security.auth.login.Configuration.getConfiguration(Configuration.java:
215)
>         at
> javax.security.auth.login.LoginContext$1.run(LoginContext.java:170)
>         at
> java.security.AccessController.doPrivileged(Native
> Method)
>         at
> javax.security.auth.login.LoginContext.init(LoginContext.java:167)
>         at
> javax.security.auth.login.LoginContext.<init>(LoginContext.java:393)
>         at
> org.jboss.docs.jaas.howto.SessionClient.main(SessionClient.java:64)
> Caused by: java.io.IOException: Unable to locate a
> login configuration
>         at
> com.sun.security.auth.login.ConfigFile.init(ConfigFile.java:206)
>         at
> com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:95)
>         ... 14 more
>
> O SessionClient � a Classe cliente que vai acessar o
> EJB. Quando vou roda-la eu seto o classpath = bean.jar
> e dentro desse bean.jar estao o roles.properties e o
> users.properties, mesmo assim ele da esse erro.
>
> Atenciosamente,
> Maiquel
>
> _______________________________________________________________________
> Yahoo! Mail
> Mais espa�o, mais seguran�a e gratuito: caixa postal de 6MB, antiv�rus,
prote��o contra spam.
> http://br.mail.yahoo.com/
>
> ---------------------------------------------------------------------
> Para cancelar a subscri��o, envie mensagem para:
[EMAIL PROTECTED]
> Para comandos adicionais, envie mensagem para:
[EMAIL PROTECTED]
>
>



---------------------------------------------------------------------
Para cancelar a subscri��o, envie mensagem para: [EMAIL PROTECTED]
Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]

Responder a