Dev (Back & Front)ARTIGO

Criando um Realm Personalizado no Tomcat

Esse artigo tem como objetivo mostrar como criar uma maneira
de autenticação personalizada utilizando o ralm.

Caso você queira saber mais sobre o realm e como ele
funciona veja o artigo (https://imasters.com.br/artigo/17312/javaweb/seguranca_jee_com_realmtomcat/)
escrito por Camilo Lopes.

 

Configurando o tomcat para utilizar o nosso realm
personalizado.

Primeiramente crie uma tag do real para seu modelo de
autenticação.

<Realm className="org.apache.catalina.realm.ws.<br />RealmAuthenticate"  urlService="http://localhost:9999/wsAuthenticator/ServiceAuthenticateRealm?wsdl"<br />/>

 

Na tag do real nos definimos o atributo “className” que
especifica a nossa classe de autenticação. Nesse atributo nós passamos o
endereço completo para a classe.

O segundo atributo “urlService” é um atributo personalizado
para o nosso modelo de autenticação.

 

Criando de autenticação
do Realm

 

Após configurar o tomcat com a tag do realm nós devemos
criar a classe na qual passamos como argumento no “className”.

package org.apache.catalina.realm.ws;<br /><br />import java.security.Principal;<br />import java.util.ArrayList;<br />import java.util.List;<br />import org.apache.catalina.realm.GenericPrincipal;<br />import org.apache.catalina.realm.RealmBase;<br /><br />public class WSRealmAuthenticate extends RealmBase implements Principal {<br /><br />    /**<br />     * Url do Web Service<br />     */<br />    private String urlService;<br /><br />    /**<br />     * Armazena o nome do usuário<br />     */<br />    private String username;<br /><br />    /**<br />     * Armazena a credencial do usuário<br />     */<br />    private String credentials;<br /><br />    /**<br />     * autentica usuário<br />     * username: recebe o nome do usuário<br />     * credentials: recebe a senha do usuário<br />     * @param username<br />     * @param credentials<br />     * @return<br />     */<br />    @Override<br />    public Principal authenticate(final String username, String credentials) {<br />        this.username = username;<br />        this.credentials = credentials;        <br />        return this;<br />    }<br /><br />    /**<br />     * verifica se o usuário pertence a role<br />     * principal: recebe um objeto principal<br />     * role: recebe o nome da role<br />     * @param principal<br />     * @param role<br />     * @return<br />     */<br />    @Override<br />    public boolean hasRole(Principal principal, String role) {<br />        // implementar aqui<br />        return true;<br />    }<br /><br />    /**<br />     * retorna o nome do usuário<br />     * @return<br />     */<br />    @Override<br />    public String getName() {<br />        return username;<br />    }<br /><br />    /**<br />     * Retorna a senha associada ao usuário<br />     * user: recebe o usuário<br />     * @param user<br />     * @return<br />     */<br />    @Override<br />    protected String getPassword(final String user) {<br />        return credentials;<br />    }<br /><br />    /**<br />     * Retorna a principal associada ao usuário<br />     * @param principal<br />     * @return<br />     */<br />    @Override<br />    protected Principal getPrincipal(String principal) {<br />        List roles = new ArrayList();<br />        roles.add("admin");<br />        GenericPrincipal genericPrincipal = new GenericPrincipal(this, username, credentials, roles);<br />        return genericPrincipal;<br />    }<br /><br />    /**<br />     * Parametro da url do web service<br />     * @param urlService<br />     */<br />    public void setUrlService(String urlService) {<br />        this.urlService = urlService;<br />    }<br /><br />}<br />

Você pode ver que o método hasRole(), esse método que vai
ser o responsável por implementar a regra que vai autenticar o usuário.

Repare que para o atributeo “urlService” nós criamos uma
método “set” para o tomcat possa atribuir o valor do nosso atributo na nossa
classe.

No método getPrincipal() que é um método abstrato da classe
RealmBase nós criamos um objeto principal genérico com os dados de login, senha
e regras do usuário, e passamos nosso objeto de autenticação na criação do GenericPrincipal.

Após ter construído a classe crie um jar e coloque o mesmo
na pasta lib do tomcat.

Agora pronto só configurar suas aplicações que iram utilizar
o modelo de autenticação do tomcat.

é bacharelando sistemas de informação no IESAM, e trabalha com o desenvolvimento de sistemas desde 2006. Possui a certificação SCJP 6 e atualmente é desenvolvedor de sistemas da Prodepa (Processamento de Dados do Estado do Pará), no setor de tecnologia e inovação.

Ver perfil