繁体   English   中英

如何在Web应用程序中实现HTTPS登录页面?

[英]How to implement a HTTPS login page in a web application?

我想创建一个安全的登录/注销机制。 我开始阅读以下文章,以了解要考虑的事项:

这些文章提出了一些好处,但我正在考虑以与Yahoo邮件登录页面类似的方式使用HTTPS。 您知道...您输入http://mail.yahoo.com并重定向到HTTPS页面,例如** https://**login.yahoo.com/config/login,其中您插入了用户名和密码,验证您的凭据后,您将被重定向回具有生成的session_id cookie的HTTP页面,并且所有通信都在使用cookie的HTTP上。

我需要什么来实现这种行为?

我想为两个Java Web应用程序(一个使用Spring框架,一个使用Struts 1)执行此操作,但不知道如何将该HTTPS部分集成到应用程序中(我之前从未使用过HTTPS)。

首先,您需要为服务器启用SSL。 对于Tomcat,您需要生成openSSL密钥库并将以下连接器添加到server.xml:

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

要将SSL集成到您的应用程序中,我建议使用Spring Security。 它提供您想要的(通过HTTPS登录,然后重定向到HTTP)。 要实现它,您需要做的就是将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>

当然,春季和春季安全确实有一个相当陡峭的学习曲线,但它是完全值得的。 做一次,然后你可以在不到一个小时的时间内将它应用到新的应用程序。 您可以在Spring和Struts应用程序中使用Spring Security。

Spring安全性曾经是Acegi的安全性。 这篇文章将帮助您入门。

不确定任何Java或弹簧细节,但一般情况下:

1)在服务器上设置SSL证书。

2)转到登录页面时转发或链接到绝对URL(在开头使用https://)

3)成功验证后转发到绝对URL(使用http://)。

4)在登录页面代码中包含一个检查,仅接受https连接。

当然,可能存在特定于框架的方式来执行http / https重定向,而无需明确指定完整的URL。

@see Acegi(春季安全)

我认为它提供了所有必需的组件。 例如,它支持通过https登录。 有一个很好的参考 如何获取https登录,您可以在这里阅读。 我想你应该读完所有。

我建议调查某种单点登录解决方案。 在Google中快速搜索会产生JOSSOOpen SSOCAS等。 我之前和CAS一起工作过一段时间,并且对它有一些积极的经验。 Spring Security还内置了支持CAS的支持。

加载安全页面脚本以检查令牌。

在脚本的顶部:

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

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

登录页面应设置安全令牌并创建会话,然后在会话中传递该会话。 服务器跟踪哪个会话拥有哪个令牌。 要实现服务器,必须为脚本实现checkToken方法。 令牌应保存在cookie中,或者以某种方式保存在页面中(用于后续请求)。

当向服务器发出请求时,它必须包含令牌,否则将失败重定向(1)。

当用户会话到期时(通过注销或超时),服务器中的映射将不再存在(会话ID到令牌ID),因此带有令牌的任何新请求都将无效并导致重定向(2)。

这篇文章有一个有趣的解决方案

http://forum.springsource.org/archive/index.php/t-65651.html

这家伙使用过滤器在交换机期间保持会话活动(https - http)

它对我有用!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM