安全顶部

我刚宣布了新的学习Spring Security课程,包括全部材料专注于春季安全的新OAuth2堆栈5:

>>查看课程

1.概述

本教程将显示如何在Web应用程序中启用和配置记住我的功能春天安全。配置MVC应用程序的安全性和一个简单的表单登录已经讨论过。

该机制将能够跨多个会话识别用户-所以首先要明白的是,Remember Me只在会话结束后才会生效。默认情况下,这发生在30分钟不活动后,但是可以配置超时web.xml.

注意:本教程的重点是基于标准的饼干方法。为了持久的方法,看看弹簧安全-执着记住我指南。

2.安全配置

让我们看看如何使用Java设置安全配置:

@configuration @enableWebSecurity公共类SecsecurityConfig扩展了WebSecurityConfigurerAdapter {@Bean(“AuthenticationManager”)@Override公共认证管理员身份验证管理员()抛出异常{return super.authentication managerbean();@autowired public void configureglobal(authentication managerbuilder auth)抛出异常{auth.inmemoryauthentication().withuser(“user1”)。密码(“{noop} user1pass”)。角色(“用户”).and().withuser(“admin1“)。密码(”{noop} admin1pass“)。角色(”admin“);@Override受保护的void配置(最终Httpsecurity HTTP)抛出异常{http.authorizeRequests().antmatchers(“/匿名*”)。匿名().Anonymate().antmatchers(“/ login *”)。Perpicall().AnyRequest()。验证().and().formlogin().loginpage(“/ login.html”).loginprocessingurl(“/ login”).failureurl(“/ login.html?error = true”).and().logout().deletecookies(“jsessionid”)。和().rememberme()。钥匙(“unqueandsecret”);}}

如你看到的,使用的基本配置记得我()方法通过其他选项剩余非常灵活,非常简单。这钥匙这里很重要 - 它是整个应用程序的私有价值秘密,它将在生成令牌的内容时使用。

此外,这是可以配置令牌有效的时间从默认为2周到 - 例如 - 一天使用tokenValiditySeconds ()

remementme()。键(“unqueandsecret”)。tokenvalidityseconds(86400)

我们还可以查看等效的XML配置:

   <截距-url pattern =“/ **”Access =“IsAuthenticated()”/>     <身份验证 - 提供程序> <用户服务> <用户名=“user1”password =“{noop} user1pass”权限=“角色_user”/>    

3.登录表单

登录表单类似于我们用于表单登录的那个

    

登录
用户: <输入类型='文本'name ='用户名'value =''>
密码: <输入类型='password'name ='password'/>
记住我: <输入类型=“checkbox”name =“记住-me”/>
<输入名称=“提交”类型=“提交”值=“提交”/>

注意新添加的复选框输入-映射到记得我。这个添加的输入足以在remember me active状态下登录。

默认路径也可以修改如下:

.rememberme()。记忆师(“记住 - 我新”)

4.饼干

当用户登录时,该机制将创建一个额外的cookie——“remember-me”cookie。

记住我饼干包含以下数据:

  • 用户名- 识别登录的主体
  • expirytime.-使cookie过期;默认是2周
  • MD5哈希-前2个值-用户名expirytime.,加上密码和预定义的钥匙

这里首先要注意的是用户名密码是cookie的一部分——这意味着,如果其中任何一个被更改,cookie将不再有效。此外,用户名可以从cookie读取。

另外,如果remember me cookie被捕获,这种机制可能会受到攻击,理解这一点很重要。cookie有效和可用直到它到期或者凭据改变。

5.在实践中

为了更容易地看到记忆机制的工作,你可以:

  • 登录与记住我活跃
  • 等待会话过期(或删除JSessionid.在浏览器中的cookie)
  • 刷新页面

如果不记得我是活跃的,cookie过期后,用户应该是重定向到登录页面。随着我,现在的用户留在登录在新令牌/ cookie的帮助下。

六,结论

本教程展示了如何在安全配置中设置和配置记住我的功能,并简要描述了Cookie中的数据。

实现可以找到Github项目示例- 这是一个基于Eclipse的项目,因此应该易于导入和运行。

当项目在本地运行时,login.html.可以访问localhost.

安全底

我刚宣布了新的学习Spring Security课程,包括全部材料专注于春季安全的新OAuth2堆栈5:

>>查看课程
5.评论
最古老的
最新的
内联反馈
查看所有评论
对这篇文章的评论关闭!