Sei sulla pagina 1di 4

Como referencia se recomienda el ejemplo:

http://www.byteslounge.com/tutorials/jaas-authentication-in-tomcat-example
(Por alguna razn el link no se visualiza bien en Chrome, se recomienda usar Firefox)

Para este ejemplo se usar el nombre Sample como el directorio raz de mi sitio web,
obviamente debe estar dentro de webapps.
Primero se debe configurar el Realm dentro de la carpeta conf de tomcat , para ello se
modifica el archivo server.xml

Donde en el parmetro appName se coloc Sample porque as se llama el mdulo de este


ejemplo (pueden ponerle el nombre que deseen pero el directorio raz debe llamarse igual y el
resto de archivos que se desprende guardar la misma denominacin), adems se apunta a dos
clases de java que deben ser programas por ustedes SamplePrincipal y RolePrincipal (el
nombre es lo de menos y puede cambiar). Si desean pueden copiarse el cdigo que est en los
ejemplos del link de la parte superior.
Estas clases deben estar copiadas en Tomcat dentro del directorio webapps/Sample/WEBINF/classes
La carpeta WEB-INF/classes es la utilizada por Tomcat para nuestros archivos de java, ntese
que se debe crear el paquete sample.principal

Se deber crear un archivo denominado Sample.config dentro de la carpeta conf de Tomcat


(vean que el nombre seleccionado es importante para toda la aplicacin) con el siguiente
contenido:

Y Fjense que aparece un nuevo archivo de java dentro del paquete sample.module
denominado SampleLoginModule en este archivo se configura el mtodo de autenticacin,
pueden copiarlo del ejemplo propuesto en el link de la parte superior y lo adaptan a nuestro
caso para los shadowed passwords (En el ejemplo del link se indica claramente donde deberan
incrustar su cdigo)
Otro link opcional de SampleLoginModule
https://github.com/yaojingguo/security/blob/master/jdk_samples/JAAS_Authorization/sampl
e/module/SampleLoginModule.java

El Formulario de Login

webapps/Sample/login.html
Este archivo ser llamado cada vez que se requiera acceder a un recurso que necesita
autorizacin. La figura nos muestra el cdigo de dicho archivo:

Es importante destacar que en la programacin del formulario se debe llamar en el


parmetro action a j_security_check que es un mdulo que por defecto se encargar
de gestionar los callbacks de java.
Dentro de web.xml se configura que este sea el formulario de login, mediante el cdigo
En el archivo web.xml colocar:
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Example Form-Based Authentication Area</realm-name>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>

Tener presente:
Modificar el archivo /opt/apache-tomcat-XXXX/bin/catalina.sh para que registre el
LoginModule
CATALINA_OPTS="-Djava.security.auth.login.config==/opt/apachetomcat-XXXX/conf/Sample.config"

Se recomienda el archivo de claves guardarlo en:

/opt/apache-tomcat-XXXX/conf/passwd.txt

Security Constraints
Se debe definir los roles para la aplicacin y los permisos, esto se realiza en el archivo
webapps/Sample/WEB-IN/web.xml
Definicin de roles: Fjense que se debe colocar la siguiente etiqueta por cada rol que tiene la
aplicacin.
<security-role>
<role-name>CV</role-name>
</security-role>
<security-role>
<role-name>CC</role-name>
</security-role>
Para asignar un recurso al rol se utiliza un security constraint, igualmente se debe colocar una
etiqueta para cada security constraint:
En este ejemplo vemos como se puede asignar todo el contenido de una carpeta
<security-constraint>
<web-resource-collection>
<web-resource-name>ModuloVentas</web-resource-name>
<url-pattern>/ventas/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>CV</role-name>
</auth-constraint>
</security-constraint>

En este otro ejemplo vemos como asignar recursos indistintamente:


<security-constraint>
<web-resource-collection>
<web-resource-name>ModuloCompras</web-resource-name>
<url-pattern>/compras/index.jsp</url-pattern>
<url-pattern>/compras/addPro.jsp</url-pattern>
<url-pattern>/compras/updatePro.jsp</url-pattern>
<url-pattern>/compras/historico.jsp</url-pattern>
<url-pattern>/compras/queryPro.jsp</url-pattern>
<url-pattern>/compras/queryC.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>CC</role-name>
</auth-constraint>
</security-constraint>

Potrebbero piacerti anche