style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Autenticacion basada en formularios jsp

Buenas tardes,

Tengo un problema / duda al tratar de implementar la autenticación basada en formulario con JSP, mi ambiente de trabajo es el siguiente:
Servidor Glassfish, conexión a base de datos SQL 2005.

Tengo la configuración del web.xml como sigue:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee <a href="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
" title="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

">http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
</a>    id="WebApp_ID" version="2.5">
        <display-name>Aprobaciones</display-name>
        <welcome-file-list>
                <welcome-file>index.html</welcome-file>
                <welcome-file>index.htm</welcome-file>
                <welcome-file>index.jsp</welcome-file>
                <welcome-file>default.html</welcome-file>
                <welcome-file>default.htm</welcome-file>
                <welcome-file>default.jsp</welcome-file>
        </welcome-file-list>
        <security-role>
                <role-name>administrador</role-name>
        </security-role>
        <security-constraint>
                <web-resource-collection>
                        <web-resource-name>Todo</web-resource-name>
                        <url-pattern>/*</url-pattern>
                </web-resource-collection>
                <auth-constraint>
                        <role-name>administrador</role-name>
                </auth-constraint>
        </security-constraint>

        <login-config>
                <auth-method>FORM</auth-method>
                <form-login-config>
                        <form-login-page>/login.html</form-login-page>
                        <form-error-page>/loginError.html</form-error-page>
                </form-login-config>
        </login-config>
</web-app>

Pero no encuentro en donde tengo que colocar la conexión a la base de datos, en algunas páginas he mirado ejemplos pero con Tomcat o JBoos, pero este no es mi caso pues utilizo GlassFish.

No sé si debo al igual que en Tomcat crear un server.xml o directamente en la consola de GlassFish puedo crear el permiso.

Por cierto si se puede hacer la autenticación a través de un servidor LDAP no estaría nada mal.

De antemano gracias.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de francisco.santiagoj

Spring Security

Buenos días,

Investigando, me tope con muchos sitios que recomiendan Spring Security para mayor seguridad en el ámbito de Autenticación y autorización, lo que no se es si esta la puedo aplicar si no utilizo Spring, mi aplicación consta únicamente de Jsp´s y Servlets relacionados a una base de datos en SQL 2005, contenidos en un servidor Glassffish.

De antemano gracias.

Imagen de ezamudio

Spring es modular

Revisa la documentación de Spring Security. El framework completo de Spring es modular, de modo que puedes usar solamente las cosas que necesitas, aunque muchos módulos sí tienen dependencia con los módulos core y context (sospecho que al menos ya las características avanzadas de Spring Security sí va de la mano con el uso de ApplicationContexts).

Imagen de francisco.santiagoj

Revisando

Gracias @ezamudio, ya estoy revisando la documentación y parece ser que puedo utilizar Spring Security con mis jsp y mejor aun con mi Active directory, que opinas @ezamudio ¿Spring Security es la mejor forma para utilizar Autenticación y autorización?, mi aplicación no necesita tener los mas estrictos lineamientos de seguridad pero si necesito restringir el acceso a ciertos reportes y funciones.

De antemano gracias.

Imagen de francisco.santiagoj

No puedo!

Después de seguir un tutorial para hacer una prueba de Spring Security mi servidor GlassFish lanza la siguiente exception :

annot Deploy Aprobaciones
Deployment Error for module: Aprobaciones: Exception while loading the app : java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener%%%EOL%%%

Quiero entender que me falta colocar algun jar de Spring, pero realmente no se, alguien que me pueda hechar una mano por favor?.

Saludos

Imagen de ezamudio

jarhalla

Busca la clase org.springframework.web.util.Log4jConfigListener en Jarhalla. Pero ps suena como que te falta el módulo spring-web.

Imagen de francisco.santiagoj

Gracias @ezamudio

Si, lo que hice fue buscar jar por jar de la lista que aparece en el tutorial, encontré todos y los coloque en la carpeta WEB-INF/lib de mi proyecto y parece funcionar, ahora tengo otra excepcion java.lang.NoSuchMethodError: org.apache.commons.pool.impl.GenericObjectPool: method <init>()V not found; pero creo que ya es menor el apuro.

Gracias nuevamente.

Imagen de ezamudio

versión

Tal vez ese último error es por la versión de Commons Pool que estás usando...

Imagen de francisco.santiagoj

Efectivamente

El problema es la versión, baje le ultima commons-pool-1.5.5 y funciono, ahora voy a intentar hacer el login mediante LDAP, pero me estoy dando cuenta que tiene mucho de XML y funiones de Spring, lo cual me esta obligando a revisar este Framework.

Estoy implementando Spring

Estoy implementando Spring Security con Spring web flows y la metodologia es perfecta aunque un poco engorrosa al momento de comprenter todo se te tornara mas facil. Aunque aun tengo dificultades con la configuracion para conectarme a LDAP por actualmente estoy autentificando con CAS..

Excelente tu post pana

Excelente tu post pana podrias darme tu mail para contactarte para ver si me podrias ayudar y vs. Yo tambien estoy integrando LDAP a mi proyecto y se me a tornado duradero por la configuracion que me a dado trabajo.

Imagen de francisco.santiagoj

@fmoutinho2002

Estimado @fmoutinho2002,
Me costo algo de trabajo y después de revisar varias implementaciones logre conectar mi AD LDAP con Spring Security, debido a que esta es una comunidad, lo mejor es que dudas y aportaciones queden grabadas en este foro; por el momento te comparto como quedo mi spring-security.xml:

<beans:beans xmlns="http://www.springframework.org/schema/security"
        xmlns:beans="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        <a href="
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
" title="http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
">http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
</a>    <a href="
http://www.springframework.org/schema/security" title="http://www.springframework.org/schema/security">http://www.springframework.org/schema/security</a>     
        <a href="http://www.springframework.org/schema/security/spring-security-3.0.3.xsd">
" title="http://www.springframework.org/schema/security/spring-security-3.0.3.xsd">
">http://www.springframework.org/schema/security/spring-security-3.0.3.xsd">
</a>   
        <global-method-security secured-annotations="enabled"></global-method-security>

        <http auto-config="true" use-expressions="true" >      
                <!-- Los permisos a las paginas, se deben crear los grupos en el AD-->
                <intercept-url pattern="/pagina-admin.htm" access="hasRole('role_admin_en_AD')"/>
                <intercept-url pattern="/*" access="hasRole('role_para_todos_en_AD')"/>
                <intercept-url pattern="/login.htm" filters="none"/>
                <intercept-url pattern="/loginfailed.htm" filters="none"/>
                <intercept-url pattern="/logout.htm" filters="none"/>
                <intercept-url pattern="/AccessDenied.htm" filters="none"/>
                <http-basic/>
                <form-login
                        login-page="/login.htm"
                        default-target-url="/main.htm"
                        authentication-failure-url="/loginfailed.htm"                  
                />
                <logout logout-success-url="/logout.htm"/>
                <access-denied-handler error-page="/AccessDenied.htm"/>
        </http>            
 

        <ldap-server id="ldapServer" url="ldap://mi.dominio.com" port="389" root="CN=usuario.admin,OU=Admin,OU=Mexico,OU=America,DC=mi,DC=dominio,DC=com" manager-dn="CN=usuario.admin,OU=Admin,OU=Mexico,OU=America,DC=mi,DC=dominio,DC=com" manager-password="passwordAdmin"/>
       
        <authentication-manager>
                <ldap-authentication-provider server-ref="ldapServer"                  
                        user-search-base="OU=Mexico,OU=America,DC=mi,DC=dominio,DC=com"                        
                user-search-filter="sAMAccountName={0}"
                group-search-base="OU=Security Group,OU=Groups,OU=Mexico City,OU=Mexico,OU=America,DC=mi,DC=dominio,DC=com"
                group-role-attribute="cn"
                group-search-filter="member={0}"
                role-prefix="none"
                />
                       
        </authentication-manager>
       
    <ldap-user-service id="ldapUserDetailsService" server-ref="ldapServer" user-search-base="OU=Users,OU=Mexico City,OU=Mexico,OU=America,DC=mi,DC=dominio,DC=com" user-search-filter="sAMAccountName={0}"/>
 
</beans:beans>

De todos modos te paso mi email: francisco.santiago@live.com.mx por si se te ofrece.
Saludos

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">