FENET是一种安全的消息传递格式,已被国外的一些公司用于API token中。解决了OpenStack面临的许多相同问题。它们的非持久的、轻量级的特性可以降低运行云所需的开销。

fernet_token格式如下:

gAAAAABaVhKmk-inDnXQjDU-w6bw4BHhVhTAIOIspvGV6vZXHh8P9Kd6FMYdXeR6R8z_JfccBZxyTfooHvomBGhsrodIhWpAkL3lf-bqsAxr9byzPPQyyoHfp_IlOh2OgSngyt9NFVu39Sj4CM_vcInpBOCdMzMeGT7D0BRpyDC-6ziRpTmBlak

非持久化:不像UUID的token,fernet tokens 不需要被持久化到数据库。

是的!这意味着这个token将是永远是可以用的:

> SELECT * FROM `token`;
Empty set (0.00 sec)

轻量级:与 PKI token 相比,他们比较短,偏向于最小的身份信息和动态授权环境。

它们通常在180到240字节的范围内。从客户端的角度来看,您可以将它们完全视为 UUID token。

对称加密:Fernet 使用 AES-CBC 加密,并使用 SHA256 HMAC 进行签名。

简而言之,OpenStack的身份验证和授权元数据都被打包成一个包,然后将其加密并签名为 Fernet token。 OpenStack 支持 三阶段 密钥循环模型,能有效支持密钥的轮询切换和替代。

Fernet tokens 包含些什么?

Fernet tokens 包含最少的身份和授权信息:刚好可以让 keystone 实现完整的 token 验证。

在一般情况下(project-scoped token),一个token 会包含一个user id 和 一个 project id,以及一些元数据,如令牌创建时间戳,token时间周期,审计ID和认证方法。 domain-scoped token 会包含 domain ID而不是 project ID。 基于信任的token 将包含信任标识。 基于联合的 token 将包含 有关联盟本身的信息。

除了 token 创建时间戳以外,所有这些都是加密的,因为它是 fernet token 加密消息 的一部分。 fernet 做为包含这些信息的载体,fernet的更多细节可以参考这个https://github.com/fernet/spec/blob/master/Spec.md。

如果你想查看一个 fernet 内容,在打包和解包中你将会体会到fernet token 有多复杂和精密。

Fernet令牌有多大?

下面可以看一个 project-scoped Fernet token:

gAAAAABaVhKmk-inDnXQjDU-w6bw4BHhVhTAIOIspvGV6vZXHh8P9Kd6FMYdXeR6R8z_JfccBZxyTfooHvomBGhsrodIhWpAkL3lf-bqsAxr9byzPPQyyoHfp_IlOh2OgSngyt9NFVu39Sj4CM_vcInpBOCdMzMeGT7D0BRpyDC-6ziRpTmBlak

上面就只有186个字节,通常都会控制在255字节内。虽然255字节没有硬性限制,并且很长的token虽然存储到数据库里不是什么问题,但是长的 token 用户体验不好。 也有不好的事情,比如一些非UUID的用户可能会有额外的安全风险。

更另人吃惊的是,如果一个用户属于多个组,有可能是属于无穷多的组的时候,这个fernet token就也会相应的很庞大,不过现实私有云环境中,也不太可能一个用户属于3个组以上。

不过如果你将user 分配到二个不同的组,你很快就会看到 Fernet token 的长度迅速增加。

Fernet令牌可以离线验证吗?

可以进行一些离线验证,例如验证 token 是否是正确的 Fernet token,并验证创建日期。 但是,如果没有签名密钥或加密密钥,就不能离线验证了。

性能怎么样?

Fernet token 的性能比 UUID token 快 85%,比 PKI token 快89%。

怎么配置并使用 Fernet?

只需要以下几步。

1,通过更改 keystone.conf 中[token]下的 provider:

[token]
provider = fernet

2,初始化密钥库:

mkdir /etc/keystone/fernet-keys/
keystone-manage fernet_setup

初始化密钥库后,会在 key_repository 里生成一对密钥:一个staged key 用于解密tokens,一个 primary key 用于加密token。

3,在部署多节点 keystone 集群时,这时候需要将  key_repository /etc/keystone/fernet-keys/  里的目录和文件 复制到每个其他的keystone节点相对应的目录上。这样确实可以用 fernet token 可以在不同的节点上使用相当的密钥进行解密。

Keystone Fernet tokens相关推荐

  1. MySql__为用户赋于主从同步的权限

    MySql__为用户赋于主从同步的权限 在配置Otter的时候报错: CanalParseException: command : 'show master status' has an error! ...

  2. openstack学习笔记之keystone

    keystone 作为 OpenStack 的基础支持服务,Keystone 做下面这几件事情: --管理用户及其权限 --维护 OpenStack Services 的 Endpoint --Aut ...

  3. 源码安装OpenStack Ussuri ---Keystone篇

    源码安装OpenStack Ussuri -Keystone篇 前面我们进行了准备的操作,现在开始源码安装Keystone ,Keystone源码已经上传到我的gitee上面了,下面我们直接用这上面的 ...

  4. [转] OpenStack Kilo 更新日志

    OpenStack 2015.1.0 (Kilo)更新日志 原文: https://wiki.openstack.org/wiki/ReleaseNotes/Kilo/zh-hans 目录  [隐藏] ...

  5. OpenStack双网卡、多节点搭建

    1.新建三台虚拟机(controller.computer.object) 一.配置三个源: 1.Base源  CentOS-Base.repo 阿里源 wget -O /etc/yum.repos. ...

  6. OpenStack 2015.1.0 (Kilo)更新日志

    看到好东西,就分享一下.遗憾的是不在csdn,只有复制过来了. OpenStack对象存储(Swift)[edit]新功能[edit]纠删码(beta)[edit] Swift现在支持纠删码(EC)存 ...

  7. OpenStack Train Magnum部署Kubernetes(1)--部署OpenStack Train

    基于Packstack部署OpenStack Train版本 部署环境 操作系统:CentOS Linux release 7.7.1908 OpenStack:Train PackStack:ope ...

  8. OpenStack Queens版搭建详解

    目录 OpenStack Queens版搭建详解 1.基础环境配置 1.2 节点网络规划 1.3 关闭防火墙 1.4 配置yum源 1.5 配置节点IP 1.6 配置主机名 1.7 配置主机名解析(h ...

  9. OpenStack Stein版搭建详解

    目录 .基础环境配置 1.1 节点硬件规划 1.2 节点网络规划 1.3 关闭防火墙 1.4 配置yum源 1.5 配置节点IP 1.6 配置主机名 1.7 配置主机名解析 1.8 配置NTP服务 2 ...

最新文章

  1. dhtmlxgrid表格笔记
  2. Python基础教程:绑定方法和非绑定详细用法
  3. JDK1.10+scala环境的搭建之linux环境(centos6.9)
  4. Django Rest Framework 视图和路由
  5. 如何配置android的adb环境变量,如何配置adb环境变量?win7配置adb环境变量的方法...
  6. linux rac 查询ip,你知道RAC怎么增加管理IP地址吗?
  7. 无法连接远程计算机,远程桌面由于以下原因之一无法连接到远程计算机
  8. 从超大规模云服务提供商处学习效率
  9. 关注Linux防火墙之介绍iptables与ufw命令
  10. 灵格斯词霸 2.6.3 - 小窗口, 大世界
  11. vs2015编译纯ASM文件
  12. word如何在任意页开始添加页码
  13. Win 10系统截图的7种方式【简单实用】
  14. hive优化——并行执行
  15. Feed Ratios
  16. 使用C加加实现计算器功能。可以实现加减乘除。需要用到内联。函数重载。new运算符。缺省参数
  17. 三角形黑盒测试-Java Swing
  18. c语言中怎么画直线,ps如何画直线 【操作流程】
  19. Labview移位寄存器理解(例子说明)
  20. 诚心希望大家可以关注一下这个游戏公司:飞鱼科技

热门文章

  1. pix2pix鼻祖——《Image-to-Image Translation with Conditional Adversarial Networks》论文解析
  2. vue3 如何定义全局变量
  3. 【常用算法】判断一个字符是否是字母
  4. [洛谷]P4158 [SCOI2009]粉刷匠 (#线性dp+背包dp)
  5. 在线流程图 思维导图
  6. java判断对象已死_JVM判断对象已死亡?
  7. linux服务器查看公网IP信息(curl)
  8. 自举升压电路解析(电荷泵工作原理)
  9. 自动化的未来是什么?
  10. oracle 存储过程举例,oracle存储过程举例讲解