无线端登录与鉴权是安全登录以及保证用户数据安全的第一步,也是最重要的一步。之前做过一个安全登录与鉴权的方案,借这个机会,系统的思考一下,与大家交流交流

先介绍一下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的更多相关文章

  1. Django基于JWT实现微信小程序的登录和鉴权

    什么是JWT? JWT,全称Json Web Token,用于作为JSON对象在各方之间安全地传输信息.该信息可以被验证和信任,因为它是数字签名的. 与Session的区别 一.Session是在服务 ...

  2. JWT+Interceptor实现无状态登录和鉴权

    无状态登录原理 先提一下啥是有状态登录 单台tomcat的情况下:编码的流程如下 前端提交表单里用户的输入的账号密码 后台接受,查数据库, 在数据库中找到用户的信息后,把用户的信息存放到session ...

  3. koa2服务端使用jwt进行鉴权及路由权限分发

    大体思路 后端书写REST api时,有一些api是非常敏感的,比如获取用户个人信息,查看所有用户列表,修改密码等.如果不对这些api进行保护,那么别人就可以很容易地获取并调用这些 api 进行操作. ...

  4. 单点登录SSO+鉴权

    一.单点登录原理 1.登录 2.注销 --------------------------------------------------------------------------------- ...

  5. SpringSecurity动态加载用户角色权限实现登录及鉴权

    很多人觉得Spring Security实现登录验证很难,我最开始学习的时候也这样觉得.因为我好久都没看懂我该怎么样将自己写的用于接收用户名密码的Controller与Spring Security结 ...

  6. .NET CORE 鉴权

    基础信息 1.什么是鉴权授权? 鉴权是验证用户是否拥有访问系统的权利,授权是判断用户是否有权限做一些其他操作. 2.传统的Session 和Cookie 主要用于无状态请求下的的用户身份识别,只不过S ...

  7. 带鉴权信息的SIP呼叫

    带鉴权信息的SIP呼叫 INVITE sip:1000@192.168.50.34SIP/2.0 Via: SIP/2.0/UDP192.168.50.32:2445;branch=z9hG4bK-d ...

  8. Ant Design Pro 鉴权/ 权限管理

    https://pro.ant.design/docs/authority-management-cn ant-design-pro 1.0.0 V4 最近需要项目需要用扫码登录,因此就使用antd ...

  9. RESTful登录设计(基于Spring及Redis的Token鉴权)

    转载自:http://www.scienjus.com/restful-token-authorization/ http://m.blog.csdn.net/article/details?id=4 ...

随机推荐

  1. nodejs安装zmq出错

    想用zmq来做进程间通信,在Windows下.Centos下安装成功.记录如下: 一.Windows安装zmq 直接 npm install zmq  成功就成功. 不成功的话估计是报"未能 ...

  2. 一组数字,从1到n,从中减少了3个数,顺序打乱,放在n-3的数组里,找出丢失数字

    曾经看到有这样一个JS题:有一组数字,从1到n,从中减少了3个数,顺序也被打乱,放在一个n-3的数组里请找出丢失的数字,最好能有程序,最好算法比较快假设n=10000 下面我也来贴一个算法. func ...

  3. Spring Mvc + Maven + BlazeDS 与 Flex 通讯 (七)

    BlazeDS 说明 BlazeDS是由Adobe开源的基于amf协议的,用于解决flex与java通讯的组件; 基于传统的文本协议的XML传输方式,在抽象层方面会有很大的压力,特别在需要序列化与反序 ...

  4. 在windows上实现多个java jdk的共存解决办法

    转自:https://www.cnblogs.com/jianyungsun/p/6918024.html 分析问题 为了多快好省的解决当前的问题,我的想法是在windows中同时安装jdk1.6和j ...

  5. 2012 Dhaka

    2012 Dhaka B - Wedding of Sultan 题目描述:给出一棵树的\(dfs\)序(只要经过就会记录),求每个点的度 solution 按\(dfs\)序的规则还原这棵树就好了. ...

  6. 大数据的常用算法(分类、回归分析、聚类、关联规则、神经网络方法、web数据挖掘)

    在大数据时代,数据挖掘是最关键的工作.大数据的挖掘是从海量.不完全的.有噪声的.模糊的.随机的大型数据库中发现隐含在其中有价值的.潜在有用的信息和知识的过程,也是一种决策支持过程.其主要基于人工智能, ...

  7. 006_mac osx 应用跨屏幕

    一般情况下 mac osx 中一个应用程序只能在一个屏幕上显示,作为从 windows 转过来的用户有点不太习惯,Goolge 后发现还是有解决方案的(虽然不是很好用). 打开 Mac 的系统偏好设置 ...

  8. Uploadify3.2中文提示

    版本:Uploadify Version 3.2官网:http://www.uploadify.com Uploadify是一款基于Jquery的上传插件,用起来很方便.但上传过程中的提示语言为英文, ...

  9. Coursera台大机器学习技法课程笔记13-Deep Learning

    深度学习面临的问题和现在解决的办法: 简要来说,分两步使用DL:初始化时一层一层的选择权重,而后再进行训练: 那么怎么做pre-training,即怎么选择权重呢?好的权重能够不改变原有资料的信息,即 ...

  10. python过滤 Kubernetes api数据

    一.需求分析 Kubernetes endpoints api地址 http://ip地址:端口/api/v1/namespaces/default/endpoints services api地址 ...