单点登录
1、什么是单点登陆?
单点登录(Single Sign On),简称为 SSO。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
2、单点登陆如何解决
-
redis作为缓存储存session信息(cookie/session)
-
JWT来解决单点登陆
3、基于cookie和session的单点登陆解决
redis存储所有session_id。每次做session验证不再从本机对比session,而是将session放在redis里统一管理。无论那台服务器上存储的session都放在redis中。那么在判断的时候都以redis里的数据为准,即可解决单点登陆问题
4、基于JWT的单点登陆解决(计算)
-
什么是JWT
-
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准
-
-
JWT组成
-
头部(header)
-
载荷(payload)
-
签证(signature)
-
-
JWT在django中如何使用
-
djangorestframework-jwt的配置+django自带的验证系统
-
-
JWT优势
-
因为json的通用性,所以JWT是可以进行跨语言支持的,像JAVA,JavaScript,NodeJS,PHP等很多语言都可以使用。
-
因为有了payload部分,所以JWT可以在自身存储一些其他业务逻辑所必要的非敏感信息。
-
便于传输,jwt的构成非常简单,字节占用很小,所以它是非常便于传输的。
-
它不需要在服务端保存会话信息, 所以它易于应用的扩展
-
-
JWT和劣势
-
保护好secret私钥,该私钥非常重要。
-
一旦token泄露,在有效期内任何人都可以使用该token进入系统,且不可撤回
-
-
JWT安全要求
-
不应该在jwt的payload部分存放敏感信息,因为该部分是客户端可解密的部分。
-
如果可以,请使用https协议(https和http的区别)
-