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

推荐订阅源

V
Vulnerabilities – Threatpost
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
WordPress大学
WordPress大学
Apple Machine Learning Research
Apple Machine Learning Research
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
P
Palo Alto Networks Blog
大猫的无限游戏
大猫的无限游戏
量子位
S
Secure Thoughts
博客园 - 【当耐特】
V
Visual Studio Blog
腾讯CDC
爱范儿
爱范儿
Webroot Blog
Webroot Blog
The Register - Security
The Register - Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Latest news
Latest news
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
Cloudbric
Cloudbric
T
Troy Hunt's Blog
S
Security @ Cisco Blogs
B
Blog RSS Feed
I
Intezer
S
SegmentFault 最新的问题
N
News and Events Feed by Topic
云风的 BLOG
云风的 BLOG
C
CXSECURITY Database RSS Feed - CXSecurity.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Hacker News: Ask HN
Hacker News: Ask HN
Google DeepMind News
Google DeepMind News
TaoSecurity Blog
TaoSecurity Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Schneier on Security
Schneier on Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Recorded Future
Recorded Future
Google DeepMind News
Google DeepMind News
Forbes - Security
Forbes - Security
雷峰网
雷峰网
博客园 - 司徒正美
C
Cisco Blogs
S
Securelist
L
LINUX DO - 最新话题
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
J
Java Code Geeks
N
News | PayPal Newsroom
N
News and Events Feed by Topic

博客园 - 风歌

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,检查该用户是否在线,如果在线则直接发送,否则放回队列尾。