Spring Security,单点登录和session共享

286 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情

1 简介

Spring Security是一个能够为基于Spring的企业级应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文配置的Bean。充分利用了Spring的特性,为应用系统提供声明式的安全访问功能。 Spring Security与Spring Boot整合极其方便快捷。

Spring Security的前身是Acegi Securitu

2 SSO

SSO是英文Single Sign On的缩写,翻译过来就是单点登录。意思是只需要登录一次,子系统就都可以访问了。只要实现了一次登录,到处都可以用了。

实现思路:
现在有系统A和系统B,当用户在系统A登录之后,系统A同步Session给系统B,这样当用户通过浏览器的Cookies访问系统B的时候,就不需要再登录了。

更进一步的是,将Session存到共享的redis服务中,这样系统A和系统B就不用主动同步了。

image.png

3 Session共享

3.1 Oauth

OAuth在客户端和服务提供商之间,设置了一个授权曾。客户端不能直接登录服务提供商,只能登陆授权层,以此将用户与客户端分开。

客户端登录授权层之后,服务提供商根据令牌的权限范围和有效期向客户端开放用户资料。

3.2 CAS

中心认证服务(Central Authentication Server)SSO仅仅是一种架构,一种设计。而CAS是对SSO的一种实现。

4 CSRF和XSS

4.1 XSS

XSS就是在html里嵌入违规代码,可以让用户发起外站请求的能力。

比如有1000个网站,都嵌入了违规代码,每个打开这1000个网站的用户都会自动访问指定的一个网站,这就对这个指定的网站形成了流量攻击。

4.2 CSRF

Cross Site Request Forgery,跨站请求伪造。原理是攻击者伪造网站后台的某个功能接口的请求地址,诱导用户去点击或者用特殊方法让请求地址自动加载。用户在登录状态下这个请求被服务端接收之后会被以为是用户合法的操作。