摘要:
很多企业内部使用LDAP保存用户信息,这章我们来看一下如何从LDAP中获取Spring Security所需的用户信息。 首先在pom.xml中添加ldap所需的依赖。 然后修改配置文件,使用内嵌的ldap服务器和ldap-authentication-provider。 这里配置内嵌的ldap服务 阅读全文
摘要:
1. 攻击场景 session fixation会话伪造攻击是一个蛮婉转的过程。 比如,当我要是使用session fixation攻击你的时候,首先访问这个网站,网站会创建一个会话,这时我可以把附有jsessionid的url发送给你。 你使用这个网址访问网站,结果你和我就会公用同一个jsessi 阅读全文
摘要:
匿名登录,即用户尚未登录系统,系统会为所有未登录的用户分配一个匿名用户,这个用户也拥有自己的权限,不过他是不能访问任何被保护资源的。 设置一个匿名用户的好处是,我们在进行权限判断时,可以保证SecurityContext中永远是存在着一个权限主体的,启用了匿名登录功能之后,我们所需要做的工作就是从S 阅读全文
摘要:
1 默认策略 在我们自定义的login中增加一个选择框 web.xml中增加成上述就可以实现了。 默认有效时间是两周,启用rememberMe之后的两周内,用户都可以直接跳过系统,直接进入系统。 实际上,Spring Security中的rememberMe是依赖cookie实现的,当用户在登录时选 阅读全文
摘要:
一个常见的需求是,普通用户登录之后显示普通用户的工作台,管理员登陆之后显示后台管理页面。这个功能可以使用taglib解决。 其实只要在登录成功后的jsp页面中使用taglib判断当前用户拥有的权限进行跳转就可以。 这里我们只做最简单的判断,只区分当前用户是否为管理员。可以根据实际情况做更加复杂的跳转 阅读全文
摘要:
多个用户不能使用同一个账号同时登陆系统。 1. 添加监听器 在web.xml中添加一个监听器,这个监听器会在session创建和销毁的时候通知Spring Security。 2.添加过滤器 控制同步的session过滤器 3.1 后面的用户禁止登陆 默认情况下,如果有一个人使用了一个账号登录了系统 阅读全文
摘要:
1. HttpSessionContextIntegrationFilter 位于过滤器顶端,第一个起作用的过滤器。 用途一,在执行其他过滤器之前,率先判断用户的session中是否已经存在一个SecurityContext了。如果存在,就把SecurityContext拿出来,放到Security 阅读全文
摘要:
有些情况,只要用户登录就可以访问某些资源,而不需要具体要求用户拥有哪些权限,这时候可以使用IS_AUTHENTICATED_FULLY,配置如下所示: 这样除了/admin.jsp之外所有的URL,只要是登录用户就可以访问了。 阅读全文
摘要:
如果想将动态管理资源与自定义登录页面一起使用,最简单的办法就是在数据库中将登录页面对应的权限设置为IS_AUTHENTICATED_ANONYMOUSLY。 因此在数据库中添加一条资源信息。 这里的/login.jsp*就是我们自定义登录页面的地址。 然后为匿名用户添加一条角色信息: 最后为这两条记 阅读全文
摘要:
如果试图访问一个没有访问权限的页面,那么页面会出现403 访问错误。 如果我们希望自定义访问拒绝页面,只需要随便创建一个jsp页面,让后将这个页面的位置放到配置文件中。 下面创建一个accessDenied.jsp 修改配置文件 阅读全文
摘要:
1. MD5加密 任何一个正式的企业应用中,都不会在数据库中使用明文来保存密码的,我们在之前的章节中都是为了方便起见没有对数据库中的用户密码进行加密,这在实际应用中是极为幼稚的做法。可以想象一下,只要有人进入数据库就可以看到所有人的密码,这是一件多么恐怖的事情,为此我们至少要对密码进行加密,这样即使 阅读全文
摘要:
国内对权限系统的基本要求是将用户权限和被保护资源都放在数据库里进行管理,在这点上Spring Security并没有给出官方的解决方案,为此我们需要对Spring Security进行扩展。、 数据库表结构 这次我们使用五张表,user用户表,role角色表,resc资源表相互独立,它们通过各自之间 阅读全文
摘要:
Spring Security默认提供的表结构太过简单了,其实就算默认提供的表结构很复杂,也无法满足所有企业内部对用户信息和权限信息管理的要求。基本上每个企业内部都有一套自己的用户信息管理结构,同时也会有一套对应的权限信息体系,如何让Spring Security在这些已有的数据结构之上运行呢? 自 阅读全文
摘要:
将上述配置代码配置为 现在只要再为jdbc-user-service提供一个dataSource就可以让Spring Security使用数据库中的权限信息了。在此我们使用spring创建一个演示用的dataSource实现,这个dataSource会连接到hsqldb数据库,从中获取用户权限信息。 阅读全文