无线端安全登录与鉴权一之Kerberos
无线端登录与鉴权是安全登录以及保证用户数据安全的第一步,也是最重要的一步。之前做过一个安全登录与鉴权的方案,借这个机会,系统的思考一下,与大家交流交流
先介绍一下TX系统使用的Kerberos方案,参考了 http://blog.csdn.net/wulantian/article/details/42418231 的文章
一、概念介绍
Kerberos:起源于希腊神话,是一支守护着冥界长着3个头颅的神犬,在keberos Authentication中,Kerberos的3个头颅代表中认证过程中涉及的3方:Client、Server和KDC,而Kerberos的认证过程就是通过这3方协作完成。
KDC:Kerberos Distribution Center,KDC在整个Kerberos Authentication中作为Client和Server共同信任的第三方起着重要的作用,KDC有两个模块,一个是AuthenticationService,鉴权模块,就是用来认证用户身份的,另一个叫GrantingService,授权模块,颁发访问Service的Ticket给客户端;
TGT:Ticket Granting Ticket,获取Ticket的授权,类似股票中的认购证;
Ticket:票据,入场券,访问服务器资源的凭证
MasterKey:主密钥,用户的明文密码经过hash算法后保存在数据库的密码,不可逆;
SessionKey:会话密钥,客户端与服务端通信期间的密钥;
Skdc_client:KDC和Client之间的SessionKey
Skdc_service:KDC和Service之间的SessionKey
Sserver_client:Service和Client之间的SessionKey
二、原理
整个Kerberos是基于ticket(票据的),先借用一个形象的例子解释下原理
Kerberos原理:我(Client)到游乐场去玩,在游乐场的售票处(KDC的AuthenticationService模块)买了一张门票(Ticket),游乐场有很多娱乐项目,像摩天轮啊、过山车、海盗船……等等的,我先排队玩摩天轮(Service),然后到摩天轮的入口处,验票员美女要验我的票,她就拿着我的票到授权服务器(KDC的GrantingService模块)去刷一下,然后滴……学生卡,出来了一个座位号(Ticket),然后就拿着座位号去玩摩天轮(Service),摩天轮的验票员检查我的座位号(Ticket),能过后,我就可以开心地玩过山车了;然后我又来到摩天轮的地方,按照同样的流程去玩……
Kerberos就是实现了这样的一个过程
三、时序图

有一个有意思的地方,TGT本来是应该KDC直接发给Server的,这里KDC交给了Client转发,为什么?因为KDC懒,哈哈……
如果同时发给Client和Server会存在一个先后的问题,必须保证Server在Client之前收到,这个是没办法的,所以比较好的方式是Client带过去。
以上这个就是Kerberos最基本的认证方式,叫域内认证模式,这种方式是有点问题的,就是服务器密钥加密的数据直接返回给客户端了,违背了LongTermKey/MasterKey加密的数据不在网上传输的原则,所以有一种改进方案,请看 无线端安全登录与鉴权二
无线端安全登录与鉴权一之Kerberos的更多相关文章
- Django基于JWT实现微信小程序的登录和鉴权
什么是JWT? JWT,全称Json Web Token,用于作为JSON对象在各方之间安全地传输信息.该信息可以被验证和信任,因为它是数字签名的. 与Session的区别 一.Session是在服务 ...
- JWT+Interceptor实现无状态登录和鉴权
无状态登录原理 先提一下啥是有状态登录 单台tomcat的情况下:编码的流程如下 前端提交表单里用户的输入的账号密码 后台接受,查数据库, 在数据库中找到用户的信息后,把用户的信息存放到session ...
- koa2服务端使用jwt进行鉴权及路由权限分发
大体思路 后端书写REST api时,有一些api是非常敏感的,比如获取用户个人信息,查看所有用户列表,修改密码等.如果不对这些api进行保护,那么别人就可以很容易地获取并调用这些 api 进行操作. ...
- 单点登录SSO+鉴权
一.单点登录原理 1.登录 2.注销 --------------------------------------------------------------------------------- ...
- SpringSecurity动态加载用户角色权限实现登录及鉴权
很多人觉得Spring Security实现登录验证很难,我最开始学习的时候也这样觉得.因为我好久都没看懂我该怎么样将自己写的用于接收用户名密码的Controller与Spring Security结 ...
- .NET CORE 鉴权
基础信息 1.什么是鉴权授权? 鉴权是验证用户是否拥有访问系统的权利,授权是判断用户是否有权限做一些其他操作. 2.传统的Session 和Cookie 主要用于无状态请求下的的用户身份识别,只不过S ...
- 带鉴权信息的SIP呼叫
带鉴权信息的SIP呼叫 INVITE sip:1000@192.168.50.34SIP/2.0 Via: SIP/2.0/UDP192.168.50.32:2445;branch=z9hG4bK-d ...
- Ant Design Pro 鉴权/ 权限管理
https://pro.ant.design/docs/authority-management-cn ant-design-pro 1.0.0 V4 最近需要项目需要用扫码登录,因此就使用antd ...
- RESTful登录设计(基于Spring及Redis的Token鉴权)
转载自:http://www.scienjus.com/restful-token-authorization/ http://m.blog.csdn.net/article/details?id=4 ...
随机推荐
- html5 canvas(基本矩形)
先从简单的开始 fillRect(x,y,width,height) 在坐标x,y的位置加上一个宽,高 如: fillRect(0,0,500,500)//在坐标0,0处加上一个宽高500的填充矩 ...
- [整]Android开发优化-布局优化
优化布局层次结构 一个普遍的误解就是,使用基本的布局结构会产生高效的布局性能.然而每一个添加到应用的控件和布局,都需要初始化,布局位置和绘制.比如,使用一个嵌套的LinearLayout会导致过深的布 ...
- shell 判断路径
判断路径 ];then echo "找到了123" if [ -d /root/Desktop/text ] then echo "找到了text" else ...
- 用MFC(C++)实现拼音搜索
2015年4月1日更新: 我在github开源了Objective-C版的拼音搜索项目,感兴趣的可以去看看: OC版拼音搜索 最近项目需要实现按照拼音搜索资源.在网上找了一下,这方面的东西太少了. J ...
- spring事务详解(二)实例
在Spring中,事务有两种实现方式: 编程式事务管理: 编程式事务管理使用底层源码可实现更细粒度的事务控制.spring推荐使用TransactionTemplate,典型的模板模式. 申明式事务管 ...
- 【题解】BZOJ 1901: Zju2112 Dynamic Rankings
题目传送门(权限题) 一道类似的非权限题 题意 N个数的序列,每次修改一个数或者询问区间里的第K小.可以离线. 简要做法 假如要求在线,可以树状数组套个线段树~ 但是这题是可以离线的,就可以乱搞整体二 ...
- java8新特性详解(转)
原文链接. 前言: Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with ...
- 使用css实现移动端导航条滚动
<div class="tab"> <div class="table-item"> <span class="tab- ...
- GPU下train 模型出现nan
When training on GPU, the error "Model diverged with loss = NaN" is often caused by a sotm ...
- js中的事件委托或是事件代理详解(转载)
起因: 1.这是前端面试的经典题型,要去找工作的小伙伴看看还是有帮助的: 2.其实我一直都没弄明白,写这个一是为了备忘,二是给其他的知其然不知其所以然的小伙伴们以参考: 概述: 那什么叫事件委托呢?它 ...