zoukankan      html  css  js  c++  java
  • 单点登录系统SSO实现

    前些天被问到单点登录了,而据我当时做的这个模块两年了,现在重新温习并记录下,方便以后快速回忆起来

    一、什么是单点登录系统

    SSO全称Single Sign On。SSO是用户只需要登录一次就可以访问所有相互信任的应用系统

    二、为什么需要单点登录系统

    分布式集群的项目因为每个模块都部署在不同的机器。如果第一次在A系统登录,第二次访问B系统,这个时候B系统并没有保存用户状态,或者第一次nginx转发到A系统的机器1,在机器1登录,第二次访问A系统,nginx转发到了机器2,这些情况下都是需要重新登录。

    为了解决这种情况,可以有两种机制:单点登录、tomcat配置session复制

    session复制在集群下,代价过高,可能导致系统资源消耗过多。

    所以构建一个单点登录系统,提供一个接口,供其他模块调用,来检测用户登录状态。实现就是使用redsi来模拟session,对session统一管理

    三、怎么实现

    1、首先sso系统提供登录,校验用户,登出等基本用户操作

    2、登录的时候将用户信息保存到redis中,并设置过期时间,(key可以含有token,value为用户信息),请将用户的token响应给浏览器cookie,并设置cookie的domain(domain用来设置域,方便子域名系统能把cookie携带过来)

    3、登录校验:最好写成一个过滤器,用户每次请求当前domain设置的域名及其子域名的时候,会携带用户cookie,过滤器从cookie里取token,去redis里查询用户信息,查到就放行,未查到就跳转到登录页面

    4、登出:用户发起登出请求,登出接口获取到cookie中的用户的token,然后进行缓存请求,并清空cookie

    参考链接:https://www.jianshu.com/p/cf41a10da952

  • 相关阅读:
    推荐一个不错的在线Linux学习平台(免安装系统)
    C#基本语法知识
    GDI+ 使用LockBits和指针加快处理速度
    C#对图像像素处理的三种方式
    [转]video4linux(v4l)使用摄像头的实例基础教程与体会
    Eclipse Qt开发环境的建立
    c#图像处理基础
    [转]超酷的图像效果
    Qt开发环境的建立
    C++模版全掌握(实例)
  • 原文地址:https://www.cnblogs.com/xhy-shine/p/11382818.html
Copyright © 2011-2022 走看看