Вы находитесь на странице: 1из 4

Como referencia se recomienda el ejemplo:

http://www.byteslounge.com/tutorials/jaas-authentication-in-tomcat-example

(Por alguna razón el link no se visualiza bien en Chrome, se recomienda usar Firefox)

Para este ejemplo se usará el nombre “Sample” como el directorio raíz 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

de tomcat , para ello se modifica el archivo server.xml Donde en el parámetro appName se

Donde en el parámetro appName se colocó “Sample” porque así se llama el módulo de este ejemplo (pueden ponerle el nombre que deseen pero el directorio raíz debe llamarse igual y el resto de archivos que se desprende guardar la misma denominación), además 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 código que está en los ejemplos del link de la parte superior.

Estas clases deben estar copiadas en Tomcat dentro del directorio webapps/Sample/WEB- INF/classes

La carpeta WEB-INF/classes es la utilizada por Tomcat para nuestros archivos de java, nótese 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 aplicación) con el siguiente contenido:

para toda la aplicación) con el siguiente contenido: Y Fíjense que aparece un nuevo archivo de

Y Fíjense que aparece un nuevo archivo de java dentro del paquete sample.module denominado SampleLoginModule en este archivo se configura el método de autenticación, 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 deberían incrustar su código)

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 autorización. La figura nos muestra el código de dicho archivo:

La figura nos muestra el código de dicho archivo: Es importante destacar que en la programación

Es importante destacar que en la programación del formulario se debe llamar en el parámetro action a j_security_check que es un módulo 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 código

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/apache-

tomcat-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 aplicación y los permisos, esto se realiza en el archivo webapps/Sample/WEB-IN/web.xml

Definición de roles: Fíjense que se debe colocar la siguiente etiqueta por cada rol que tiene la aplicación.

<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>