单点登录SSO(single sign on)模式(单点登录+权限认证)

一、单点登录三种常见方法:

第一种: session广播机制实现(已过时)

                session赋值 = 把登录的session对象,复制给其他模块

                缺点:如果模块多的话,session复制会造成资源浪费,还会因为session复制导致数据重复

第二种:使用cookie + redis 实现(不太常用)

1、介绍

2、怎么设置过期时间?:使用redis 可以设置过期时间

3、概述、

4、原理

 5、使用 

        利用SpringSession来实现session共享   http://t.csdn.cn/5pLqs

第三种:使用token实现(常用)

                  怎么设置过期时间:token可以设置过期时间

二、JWT

 token是什么?按照一定规则生成的字符串,字符串可以包含用户信息。

 什么是JWT? jwt就是token的一种官方规则

                        一种约定好生成字符串的规则

                        jwt就是生成字符串的一种实现

 

 JWT的组成?

头部:主要设置一些规范信息,签名部分的编码格式就在头部中声明。
载荷:token中存放有效信息的部分,比如用户名,用户角色,过期时间等,但是不要放密码会泄露!
签名:将头部与载荷分别采用base64编码后,用“.”相连,再加入盐,最后使用头部声明的编码类型进行编码,就得到了签名。

(头部声明编码)【 [头部(base64) + "." + 荷载(base64)] , 盐(秘钥)】 = > 签名

什么是jjwt?

JJWT是一个提供端到端的JWT创建和验证的Java库。永远免费和开源(Apache License,版本2.0),JJW很容易使用和理解。它被设计成一个以建筑为中心的流畅界面,隐藏了它的大部分复杂性。

三、登陆流程

 四、OAuth2(解决方案)

例如:微信登录、QQ登录、Gitee等社交登录,利用的就是OAuth

1、OAuth2 和 jwt 的区分? 

        OAuth2 是针对特定问题的一种方案,比如去北京,去北京是一种方案,而jwt是怎么去的,比如乘坐火车。

2、OAuth2 是什么?     

        OAuth2是针对特定问题一种解决方案。

3、OAuth2 主要可以解决什么问题? 

(1)开放系统间授权

 打印照片的权限:百度网盘 访问 打印照片 的权限

原理分析:

 三种常见的授权方式:

        方式一:用户名密码复制

                    (Lucy把百度网盘的用户名和密码给打印照片服务)

        方式二:通用开发者key

                     (百度网盘和打印照片开发一种万能钥匙,用于二者的访问)

        方式三:办法令牌(在方式二上进一步的完善)

                    (百度网盘颁发一种令牌,用于访问百度网盘)

(2)分布式访问问题(单点登录)

五、springsecurity

概念:

        Spring 是一个非常流行和成功的 Java 应用开发框架。Spring Security 基于 Spring 框架,提供了一套Web 应用安全性的完整解决方案。一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。
(1)用户认证指的是:验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。
(2)用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。

        Spring Security其实就是用filter,多请求的路径进行过滤。
(1)如果是基于Session,那么Spring-security会对cookie里的sessionid进行解析,找到服务器存储的sesion信息,然后判断当前用户是否符合请求的要求。
(2)如果是token,则是解析出token,然后将当前请求加入到Spring-security管理的权限信息中去

认证与授权实现思路

        如果系统的模块众多,每个模块都需要就行授权与认证,所以我们选择基于token的形式进行授权与认证,用户根据用户名密码认证成功,然后获取当前用户角色的一系列权限值,并以用户名为key,权限列表为value的形式存入redis缓存中,根据用户名相关信息生成token返回,浏览器将token记录到cookie中,每次调用api接口都默认将token携带到header请求头中,Spring-security解析header头获取token信息,解析token获取当前用户名,根据用户名就可以从redis中获取权限列表,这样Spring-security就能够判断当前请求是否有权限访问。

代码的执行流程

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单点登录Single Sign-On,简称SSO)是一种身份验证和授权机制,允许用户使用一组凭据(如用户名和密码)登录到多个相关应用程序或系统中,而无需为每个应用程序单独进行身份验证。 SSO的工作原理是在一个中心身份验证服务(Identity Provider,简称IdP)中进行用户身份验证,然后将授权令牌(通常是基于标准的安全令牌,如JSON Web Token)分发给已经通过身份验证的用户。这个令牌可以被其他关联应用程序或系统的服务提供商(Service Provider,简称SP)所接受,并用于验证用户的身份。 当用户尝试访问受保护资源时,他们被重定向到IdP进行身份验证。一旦验证成功,用户将被重定向回原始应用程序,并获得访问权限而无需再次提供凭据。这样,用户只需要在登录一次后,就可以无缝地访问其他应用程序或系统。 SSO的优势包括: 1. 提高用户体验:用户只需记住一个凭据,即可访问多个应用程序。 2. 减少密码管理负担:由于只需一个凭据,用户不必在多个应用程序中维护多个密码。 3. 提高安全性:SSO使用标准的身份验证和授权机制,可以提供更强的安全性和访问控制。 4. 简化身份管理:管理员可以集中管理用户的身份和权限,减少了维护多个用户帐户的工作量。 总之,SSO是一种方便且安全的身份验证机制,可以提高用户体验并简化身份管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值