2009-09-21 20 views
15

Quiero crear un mecanismo seguro de inicio/cierre de sesión. Empecé a leer los siguientes artículos para tener una idea de las cosas a tener en cuenta:¿Cómo implementar una página de inicio de sesión HTTPS en una aplicación web?

Estos artículos hacen algunos buenos puntos, pero estaba pensando en el uso de HTTPS en una de manera similar a la página de inicio de sesión de correo de Yahoo. Ya sabe ... escribe http://mail.yahoo.com y se le redirige a una página HTTPS como ** https: //**login.yahoo.com/config/login donde inserta su nombre de usuario y contraseña y después de que se verifican sus credenciales, se le redirige volver a una página HTTP con una cookie generada session_id y todas las comunicaciones a partir de allí están en HTTP usando la cookie.

¿Qué necesito para implementar este comportamiento?

Quiero hacer esto para dos aplicaciones web Java (una con Spring framework y otra con Struts 1) pero no sé exactamente cómo integrar esa parte HTTPS en la aplicación (nunca antes he trabajado con HTTPS).

Respuesta

15

Antes que nada debe habilitar SSL para su servidor. Para Tomcat es necesario generar un almacén de claves openSSL y añadir el siguiente conector a server.xml:

<Connector port="8443" scheme="https" secure="true" SSLEnabled="true" 
    keystoreFile="mykeystore" sslProtocol="TLS" 
    keystorePass="keystore password" /> 

Integrar SSL en su aplicación recomiendo Spring Security. Ofrece exactamente lo que desea (inicio de sesión a través de HTTPS, luego redirigido a HTTP). Todo lo que tiene que hacer para ponerlo en práctica, es fijar forceHTTPS true:

<bean id="authenticationProcessingFilterEntryPoint" 
class="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint"> 
    <property name="loginFormUrl" value="/pages/login.jsp" /> 
    <property name="forceHttps" value="true"/> 
</bean> 

de la primavera de golf y seguridad de primavera tienen una curva de aprendizaje bastante empinada, pero es totalmente la pena. Hazlo una vez y luego podrás aplicarlo a las nuevas aplicaciones en menos de una hora. Puede usar Spring Security en las aplicaciones Spring y Struts.

La seguridad de primavera solía ser la seguridad de Acegi. Este es un article que lo ayudará a comenzar.

3

No estoy seguro sobre cualquier información específica de Java o de primavera, pero en general:

1) Establecer un certificado SSL en su servidor.

2) hacia delante o enlace a una URL absoluta (con https: // al principio) al ir a la página de acceso

3) hacia adelante a una URL absoluta (con http: //) después de la autenticación exitosa.

4) Incluya un cheque en el código de la página de inicio de sesión para que solo acepte conexiones https.

Por supuesto, puede haber formas específicas del marco de hacer el redireccionamiento http/https sin recurrir a especificar explícitamente la URL completa.

3

@see Acegi (seguridad de primavera)

creo que proporciona todos los componentes necesarios. Por ejemplo, admite el inicio de sesión a través de https. Hay un buen reference. Cómo obtener el inicio de sesión https puede leer here. Creo que deberías leer todo.

+1

es probable que desee explicar un poco más acerca de qué parte de acegi ver – Chii

+0

¿Puede darnos un ejemplo de cómo uno puede usar Acegi para implementar esta funcionalidad? –

+0

Gracias por los comentarios. Agregué algunos enlaces, porque es difícil poner aquí todos los detalles requeridos. –

1

Recomiendo investigar algún tipo de solución de inicio de sesión único. Una búsqueda rápida en Google produce JOSSO, Open SSO y CAS, entre otros. He trabajado un poco con CAS anteriormente y tuve algunas experiencias positivas con esto. Spring Security también tiene soporte incorporado para trabajar con CAS.

1

Carga de páginas seguras una secuencia de comandos para comprobar el token.

en la parte superior de su script:

if(!getSecurityToken()) // 1 
    redirect(login_page) 

if(!checkToken(token)) // 2 
    redirect(login_page) 

La página de inicio de sesión debe establecer el token de seguridad y crear una sesión, que luego se pasó en la solicitud. El servidor realiza un seguimiento de qué sesión posee qué token. Para implementar el servidor, debe implementar para sus scripts el método checkToken. El token debe guardarse en las cookies o de alguna manera guardarse en la página (para las solicitudes posteriores).

Cuando se realiza una solicitud al servidor, debe contener el token, de lo contrario no se redireccionará (1). Cuando la sesión de los usuarios caduca (por cierre de sesión o tiempo de espera) la mapeo en el servidor ya no existirá (identificación de sesión a identificador token) y por lo tanto cualquier solicitud nueva con el token no será válida y causará una redirección (2) .

Cuestiones relacionadas