zoukankan      html  css  js  c++  java
  • 微服务安全-单点登录

    一、用户身份认证

    1、单一服务器模式(单体应用)

    一般过程如下:

    1. 用户向服务器发送用户名和密码。
    2. 验证服务器后,相关数据(如用户名,用户角色等)将保存在当前会话(session)中。
    3. 服务器向用户返回session_id,session信息都会写入到用户的Cookie。
    4. 用户的每个后续请求都将通过在Cookie中取出session_id传给服务器。
    5. 服务器收到session_id并对比之前保存的数据,确认用户的身份。

    缺点:

    • 单点性能压力,无法扩展。
    • 分布式架构中,需要session共享方案,session共享方案存在性能瓶颈。

    2、SSO(Single Sign On)模式(分布式应用)

    分布式,SSO(single sign on)模式:单点登录英文全称Single Sign On,简称就是SSO。它的解释是:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。

    • 如图所示,图中有3个系统,分别是业务A、业务B、和SSO。
    • 业务A、业务B没有登录模块。
    • 而SSO只有登录模块,没有其他的业务模块。

    一般过程如下:

    1. 当业务A、业务B需要登录时,将跳到SSO系统。
    2. SSO从用户信息数据库中获取用户信息并校验用户信息,SSO系统完成登录。
    3. 然后将用户信息存入缓存(例如redis)。
    4. 当用户访问业务A或业务B,需要判断用户是否登录时,将跳转到SSO系统中进行用户身份验证,SSO判断缓存中是否存在用户身份信息。
    5. 这样,只要其中一个系统完成登录,其他的应用系统也就随之登录了。这就是单点登录(SSO)的定义。

    优点 :

    用户身份信息独立管理,更好的分布式管理。可以自己扩展安全策略

    缺点:

    认证服务器访问压力较大。

    3、Token模式

    优点:

    • 无状态: token是无状态,session是有状态的
    • 基于标准化:你的API可以采用标准化的 JSON Web Token (JWT)

    缺点:

    • 占用带宽
    • 无法在服务器端销毁
  • 相关阅读:
    Java8新特性Stream详细教程
    自定义注解!绝对是程序员装逼的利器!!
    如何处理重复请求/并发请求的
    C#字符处理
    mysql 索引
    mysql事件【定时器】
    JS日期,金钱处理
    Controller中使用@Value无法获取属性值
    druid连接池的配置
    mybatiste报错java.lang.ClassCastException
  • 原文地址:https://www.cnblogs.com/smalldong/p/13904773.html
Copyright © 2011-2022 走看看