sso-单点登录

单点登录

项目组成

基于spring-boot-2.1.8.RELEASE,使用redis完成完成 session记录。

  • sso-base
  • sso-server
  • sso-client1
  • sso-client2
  • sso-base
  • TokenFilter: 拦截获取是否登录,并获取登录用户设置到线程变量中
  • TokenUtil:从redis获取指定key判断是否登录,以及登录用户;写入sessionId和sessionIdKey
  • ClientTokenProperties: client需要的配置项
    1. serverLoginUrl, server登录url
    2. login请求的username 和 password,用于向server端登录
    3. redisAddr, 读取sessionId和sessionIdKey,userPOValue
  • ServerTokenProperties:server需要的配置项
    1. redisAddr, 写入sessionId和sessionIdKey,userPOValue
    2. expiredSeconds, 过期时间
  • SSOConfig,加入需要的bean
    1. RedisProperties,使用自定义的redis配置项,完成 RedisProperties配置
    2. RedisTemplate,提供模板方法
  • sso-client1
  • ClientFilterConfig, 配置FilterRegistrationBean,使用TokenFilter拦截所有请求
  • ClientController, web接口
  • 配置项:

    server.port=1001
    
    cn.cxd.sso.client.redisAddr=localhost:6379
    cn.cxd.sso.client.serverLoginUrl=http://localhost:1000/server/login
    cn.cxd.sso.client.login.username=root
    cn.cxd.sso.client.login.password=root
    
    sso-client2

    同 sso-client1

    server.port=1002
    
    cn.cxd.sso.client.redisAddr=localhost:6379
    cn.cxd.sso.client.serverLoginUrl=http://localhost:1000/server/login
    cn.cxd.sso.client.login.username=root
    cn.cxd.sso.client.login.password=root
    
    sso-server
  • LoginController, 登录接口,生成sessonId,使用TokenUtil,写入sessionId和sessionIdKey
  • cn.cxd.sso.server.expiredSeconds=1000
    cn.cxd.sso.server.redisAddr=localhost:6379
    server.port=1000
    

    整体效果

  • server登录后,client1,client2 都能在正确访问各自的web接口
  • client1/client2登录后,两个client都能正确访问各自的web接口
  • client1/client2登录后,server再登录,client1/client2 都可以正确访问各自的web接口
  • api

    server
  • http://localhost:1000/server/login
  • POST
  • { "userName" : "root11", "password" : "root11" }
  • client1
  • http://localhost:1001/client1/mydata
  • GET
  • client2
  • http://localhost:1002/client2/mydata
  • GET
  • 访问时序图

    在这里插入图片描述
    在这里插入图片描述

    架构图

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值