zoukankan      html  css  js  c++  java
  • 带统一认证的轻量级网关系统

            

          由于公司现有系统中,注册、认证鉴权都耦合到网关服务端中,难以融入其他系统中,因此开发一套轻量级的,带认证服务的系统,以便嵌入到其他系统中。

     

    本系统实现注册、鉴权、心跳、push消息等功能。  数据库由redis充当。流程方案大概如下,许多业务细节不表。

     

     

     

     

    有以下几个模块

    A 统一认证服务器   B 终端 (安卓/ios 设备)  C 网关服务器

     

    注册流程

    1. 终端上传用户名和(用户名+密码)MD5给A.

    2. A检查用户名唯一性,已注册返回失败,未注册则保存用户名和(用户名+密码)md5,生成唯一用户id,并返回id和成功状态给B

      

    登录流程

    1.  B登录C的时候,C发现报文未携带ticket,返回信息引导其到A进行认证;

         如果已携带ticket,把用户id和ticket发送到A进行鉴权,如果不通过则返回错误给B,要求其重新输入密码,如果通过则进入4.

    2. B 发送用户名和用户名和密码的md5值给A。

    3. A检查用户名和md5值,如果和数据库中的md5值匹配则通过,生成唯一的ticket,记录到数据库中并返回ticket和成功状态给C;否则返回认证失败状态。

    4. C收到A的认证结果,如认证成功,记录B的登录session,返回带ticket的ack,否则返回错误给B。

    5.B接收到ack报文,检查状态,如果成功则保存ticket。

     

    心跳

    1. 终端发送心跳报文,用于维持连接。

    2. 网关接收心跳信息,返回心跳ack报文。

     

    push

    1. 网关检测redis中消息队列,获取消息,根据消息中的用户id,检查该用户是否在线,如果在线则直接发送,否则放回队列尾。

     

     

  • 相关阅读:
    Nginx 启动错误 Failed to read PID from /run/nginx.pid
    CentOS7 下 nginx 无法加载 Django 静态文件的问题
    SSD + 机械硬盘装 CentOS 分区的问题
    CentOS7 单机维护模式
    编译安装 redis 6.2.1
    谷歌师兄刷题笔记
    我用 DCL 写出了单例模式,结果阿里面试官不满意!
    红黑树杀人事件始末
    头条二面:详述一条 SQL 的执行流程
    jvisual远程 springBoot项目
  • 原文地址:https://www.cnblogs.com/junnyfeng/p/3066471.html
Copyright © 2011-2022 走看看