一、Keystone Token深度概述
Keystone作为openstack项目基础认证模块,目前支持的token类型分别是uuid、pkiz、pki、fernet。
首先,简要叙述一下这四种类型的原理及其优缺点。
uuid 比较简单,采用随机生成的序列(128位,以16进制表示)作为id,并构造token内容,需要持久化后端数据库支撑,比如mysql数据库存储。优点,实现简单;缺点是持久化查询、每次访问都需要keystone相关服务进行认证。
pki(pkiz) 基于cms算法,token格式以PKIZ_开头,pki类的token 长度很长(pkiz只是对pki进行了一定程度的压缩),它将所有token的内容都放在了token中,并且认证不需要与keystone服务交互,直接采用相关的证书进行本地认证,这类似与传统的U盾技术,但是密钥是在keystone处生成好了之后,是不能够进行实时更新的,安全性相对较低,一旦被破解,相关的信息将被暴露,此时,如果对密钥进行更新,将导致前面生成的token不可用。它的缺陷在于,没有密钥的周期性更替机制(安全性大打折扣),同时,负载太大,部分rest接口,不能处理超长请求。在生产环境中,极不推荐这种方式。
fernet 是当前主流推荐的token格式,这种方式相较于前几种类型,是当前比较均衡的一种方式。它不需要后端持久化存储,与pki类似,但是在认证上,仍然需要与keystone进行交互。它的token结构,采用了特定的数理结构设计(包括socoped类型、user信息等等),结合加密技术,重要的优点是它的轮询替换算法。简要叙述一下fernet密钥的原理,默认的轮换长度是3,当以keystone-manage fernet-setup生成密钥时,会看到0、1两个索引表征,这分别是什么意思呢?在此,需要提一下三个概念,primary key(主密钥,用于加密、解密token)、secondary key(次次密钥,用于解密token)、staged key(次密钥,用于解密token),那么上述0 表示的是staged key,1 表示的是primary key,primary key相比较另外两种key,它的索引最高,并且可以加密、也可以解密;staged key 相较于secondary key是它更有机会变为primary key。也就是说,f
keystone 认证深度研究分析
最新推荐文章于 2024-06-16 20:38:42 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)