通俗的讲,token 是用户的一种凭证,需拿正确的用户名/密码向 Keystone 申请才能得到。如果用户每次都采用用户名/密码访问 OpenStack API,容易泄露用户信息,带来安全隐患。所以 OpenStack 要求用户访问其 API 前,必须先获取 token,然后用 token 作为用户凭据访问 OpenStack API。
UUID类型
D 版本时,仅有 UUID 类型的 Token,UUID token 简单易用,却容易给 Keystone 带来性能问题
UUID token 是长度固定为 32 Byte 的随机字符串,由 uuid.uuid4().hex 生成。
PKI类型
在阐述 PKI(Public Key Infrastruction) token 前,让我们简单的回顾 公开密钥加密(public-key cryptography) 和 数字签名 。公开密钥加密,也称为非对称加密(asymmetric cryptography,加密密钥和解密密钥不相同),在这种密码学方法中,需要一对密钥,分别为公钥(Public Key)和私钥(Private Key),公钥是公开的,私钥是非公开,需用户妥善保管,和 UUID 相比,PKI token 携带更多用户信息的同时还附上了数字签名,以支持本地认证,从而避免了步骤 4
PKIZ 类型
PKIZ 在 PKI 的基础上做了压缩处理,但是压缩的效果极其有限,一般情况下,压缩后的大小为 PKI token 的 90 % 左右,所以 PKIZ 不能友好的解决 token size 太大问题。
Fernet token类型
社区提出了 Fernet token ,它采用 cryptography 对称加密库(symmetric cryptography,加密密钥和解密密钥相同) 加密 token,具体由 AES-CBC 加密和散列函数 SHA256 签名。 Fernet 是专为 API token 设计的一种轻量级安全消息格式,不需要存储于数据库,减少了磁盘的 IO,带来了一定的 性能提升 。为了提高安全性,需要采用 Key Rotation 更换密钥。
几种常用的认证机制
HTTP Basic Auth
HTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RESTful API 使用的最简单的认证方式,只需提供用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少。因此,在开发对外开放的RESTful API时,尽量避免采用HTTP Basic Auth
OAuth
OAuth(开放授权)是一个开放的授权标准,允许用户让第三方应用访问该用户在某一web服务上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。
OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的第三方系统(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容
下面是OAuth2.0的流程:
这种基于OAuth的认证机制适用于个人消费者类的互联网产品,如社交类APP等应用,但是不太适合拥有自有认证权限管理的企业应用;
Cookie Auth
Cookie认证机制就是为一次请求认证在服务端创建一个Session对象,同时在客户端的浏览器端创建了一个Cookie对象;通过客户端带上来Cookie对象来与服务器端的session对象匹配来实现状态管理的。默认的,当我们关闭浏览器的时候,cookie会被删除。但可以通过修改cookie 的expire time使cookie在一定时间内有效;
Token Auth
Token Auth的优点
Token机制相对于Cookie机制又有什么好处呢?
- 支持跨域访问: Cookie是不允许垮域访问的,这一点对Token机制是不存在的,前提是传输的用户认证信息通过HTTP头传输.
- 无状态(也称:服务端可扩展行):Token机制在服务端不需要存储session信息,因为Token 自身包含了所有登录用户的信息,只需要在客户端的cookie或本地介质存储状态信息.
- 更适用CDN: 可以通过内容分发网络请求你服务端的所有资料(如:javascript,HTML,图片等),而你的服务端只要提供API即可.
- 去耦: 不需要绑定到一个特定的身份验证方案。Token可以在任何地方生成,只要在你的API被调用的时候,你可以进行Token生成调用即可.
- 更适用于移动应用: 当你的客户端是一个原生平台(iOS, Android,Windows 8等)时,Cookie是不被支持的(你需要通过Cookie容器进行处理),这时采用Token认证机制就会简单得多。
- CSRF:因为不再依赖于Cookie,所以你就不需要考虑对CSRF(跨站请求伪造)的防范。
- 性能: 一次网络往返时间(通过数据库查询session信息)总比做一次HMACSHA256计算 的Token验证和解析要费时得多.
- 不需要为登录页面做特殊处理: 如果你使用Protractor 做功能测试的时候,不再需要为登录页面做特殊处理.
- 基于标准化:你的API可以采用标准化的 JSON Web Token (JWT). 这个标准已经存在多个后端库(.NET, Ruby, Java,Python, PHP)和多家公司的支持(如:Firebase,Google, Microsoft).
相关推荐
Keystone
n阶keystone变换函数,用于消除目标距离走动,亲测好用。
作为 OpenStack 的基础支持服务,Keystone 做下面这几件事情:管理用户及其权限维护 OpenStack Services 的 EndpointA
OpenStack身份认证组件keystone的配置文件备份,放入/etc/keystone/路径下并改名为keystone.conf生效
Openstack keystone 安装包 简单快捷的搭建Keystone
keystonemiddleware 包括了用于提供认证和授权功能的 Keystone 中间件模块。最突出的模块是keystonemiddleware.auth_token,此包不会公开任何 CLI 或者 Python API 功能。
雷达Keystone变换参考资料,低速小目标相参积累
实现一阶Keystone变换,包含三种方法,分别是DFT+IFFT方法,sinc插值方法和chirp-Z方法
openstack keystone 命令详细openstack keystone 命令详细openstack keystone 命令详细openstack keystone 命令详细openstack keystone 命令详细openstack keystone 命令详细openstack keystone 命令详细openstack ...
openstackOpenStack Keystone云计算云计算云计算
!!!*** 该资源内容包括: 1、LFM信号模糊图分析 2、LFM信号快速目标回波信号建模分析 3、Keystone变换原理及实现 4、MATLAB仿真 适合:初学算法、进行仿真验证的同学,有详细的理论推导与算法仿真
Keystone ConceptMap(概念图)教程 一款国产的图像式思考辅助工具软件,可以帮助您进行概念分析、相关性分析,整理知识点的相互关系,构建基于图像的可视 化知识表征,更好的帮助我们理解和记忆,可用在知识管理、...
由于目标的高速运动,在相干处理时间内,目标可能出现严重的距离走动,本程序实现目标距离走动校正。
keystone为openstack提供了身份验证机制,其中token是贯穿整个op的钥匙!
Keystone Transform in ground moving target detection,it s very useful new comer
KeyStone概念图软件,非常好用的,不知什么原因网络已经失传,希望大家能够挖掘概念图的重要作用,造福智力工作者。
Keystone变换实现方法研究.docx
在脉冲多普勒雷达中,当使用宽带信号,目标径向速度较高时,线性距离偏移是不可忽视的,偏移使距离像在一个相干处理区间内...提出了一种基于Keystone变换的多普勒模糊度并行搜索方案,仿真结果表明了该算法的优越性。
雷达领域动目标成像; 所成像为距离速度图像; keystone距离徙动校正;
简单的keystone变换实现距离补偿,自测可用