首页 > 技术文章 > 单点登录

liudaya 2020-06-01 10:31 原文

1、什么是单点登陆?

单点登录(Single Sign On),简称为 SSO。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

 

2、单点登陆如何解决

  1. redis作为缓存储存session信息(cookie/session)

  2. 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的区别

推荐阅读