惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
阮一峰的网络日志
阮一峰的网络日志
云风的 BLOG
云风的 BLOG
D
Docker
Vercel News
Vercel News
IT之家
IT之家
Recent Announcements
Recent Announcements
Last Week in AI
Last Week in AI
V
Visual Studio Blog
Engineering at Meta
Engineering at Meta
腾讯CDC
Google DeepMind News
Google DeepMind News
I
InfoQ
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
The GitHub Blog
The GitHub Blog
博客园 - Franky
The Cloudflare Blog
A
About on SuperTechFans
有赞技术团队
有赞技术团队
Y
Y Combinator Blog
T
Tenable Blog
P
Proofpoint News Feed
Recorded Future
Recorded Future
Security Latest
Security Latest
H
Hackread – Cybersecurity News, Data Breaches, AI and More
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - 聂微东
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Google Online Security Blog
Google Online Security Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Simon Willison's Weblog
Simon Willison's Weblog
The Last Watchdog
The Last Watchdog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
N
News and Events Feed by Topic
TaoSecurity Blog
TaoSecurity Blog
U
Unit 42
The Hacker News
The Hacker News
Martin Fowler
Martin Fowler
T
Threat Research - Cisco Blogs
NISL@THU
NISL@THU
F
Full Disclosure
M
MIT News - Artificial intelligence
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
V
V2EX
Project Zero
Project Zero

博客园 - 风歌

Sublimetext (for windows)编译运行c出现Error 2错误的解决办法 vim和tmux主题颜色不一致问题 vim安装YouCompleteMe 插件 hibernate date类型插入数据库时精度只到日期没有时间 perl在命令行中打印单引号 UTL_FILE建文件失败“ORA-29280: 目录路径无效”错误 openVPN报错:All TAP-Windows adapters on this system are currently in use - 风歌 xampp连接Admin界面报错 一个换行符引发的问题 如何把excel数据导入数据库 vmware给linux虚拟机增加磁盘空间(基于lvm分区) ORA-02292主键约束问题 curl遇到longjmp causes uninitialized stack frame的处理办法 ACE6.10的安装 redhat6.3企业版安装oracle11g过程 ld编译链接时默认搜索路径 vsftpd的安装及使用问题 Fedora core 6上安装vmeare-tools VIM7.0安装
带统一认证的轻量级网关系统
风歌 · 2013-05-08 · via 博客园 - 风歌

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

本系统实现注册、鉴权、心跳、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,检查该用户是否在线,如果在线则直接发送,否则放回队列尾。