深入理解Keystone 认证

最近在搞keystone,学习一下keystone的几种认证方式:UUID, PKI。

 

UUID 认证流程

 

1.用户输入用户名密码,发送给keystone。Horizon登陆时候输入的用户密码或者CLI中的source的用户名密码环境变量。

2.Keystone验证用户名密码,并且生成token(UUID),发送给客户端。

3.客户端缓存UUID token

4.客户端发送具体的执行请求(nova boot)和UUID给keystone。

5.Keystone从http请求中获取token,并检查token是否有效

6.Token有效,处理请求,并返回客户端请求结果

7.Token失效,拒绝客户端请求,返回401。

 

PKI认证

通过keystone-manage pki_setup生成私钥及自签署证书。

 

对与pki(包括pkiz)认证方式,keystone相当于一个权威的认证中心,他用自己和的私钥证书对用户的token进行签名。 OpenStack服务中的每一个API Endpoint都有一份keystone签发的证书,失效列表和根证书。API不用在直接去keystone认证token是否合法,只需要根据keystone的证书和失效列表就可以确定token是否合法。但是这里还是会有每次都需要请求keystone去获取失效列表的操作,不可避免。

 

 

两种格式各有优劣,最大的不同是UUID必须每次都经过Keystone才能认证,而PKI是自包含的,service可以自己根据标准算法来检查签名, 这样的好处就是提高了验证效率,Keystone不会成为整个Openstack的瓶颈。但是PKI token也带来了一个问题,因为PKI token包含了很多元数据以及catalog等信息,会很大,不仅带来了网络开销,而且可能超出一些服务器的限制,引发异常

 

PKI认证流程大部分和UUID相似,可以对比上边两个图。只有下边几处不相同。

1) CMS格式的token

CMStoken包含三部分:service catalog,user role 和metadata。实例如下:

{
   "access": {
       "metadata": {
           ....metadata goes here....
       },
       "serviceCatalog": [
           ....endpoints goes here....
       ],
       "token": {
           "expires": "2013-05-26T08:52:53Z",
           "id": "placeholder",
           "issued_at": "2013-05-25T18:59:33.841811",
           "tenant": {
               "description": null,
               "enabled": true,
               "id": "925c23eafe1b4763933e08a4c4143f08",
               "name": "user"
           }
       },
       "user": {
           ....userdata goes here....
       }
   }
}


2) Token的验证

Token的验证包含三个方面:token的签名,token是否失效和token是否已经在撤销列表。

用openssl cms -verify -certfile /tmp/keystone-signing-nova/signing_cert.pem -CAfile /tmp/keystone-signing-nova/cacert.pem -inform PEM -nosmimecap -nodetach -nocerts -noattr < cms_token命令验证token签名。

根据expiration date判断token是否失效

向keystone查询token是否已经在撤销列表。

 

 

Openstack相关技术交流请加群:314889201


一、Virtual Box的安装 1、安装Virtual Box 2、 Virtual Box网络设定 3、 安装操作系统 二、 环境预配置 1、 网路设置 2、 分别修改三个虚拟机的主机名 3、 主机地址映射配置 4、 禁用selinux 5、 CentOS6本地yum源配置 注:先加载镜像 6、 NTP安装服务 三、 本地源制作 1. Centos6.6本地base、extra源制作 2. 本地base、extra源制作 3. 本地epel、openstack源制作 4. ftp服务安装 5. 修改yum源仓库指向文件 四、 keystone安装(上) 1. 安装Mysql服务 2. 安装rabbitmq消息队列 3. 为nova,neutron,cinder.heat创建用户并授权 五、 keystone安装(下) 1. 创建库和授权 2. 创建库和授权 3. 生成PKI认证所需要的证书文件 4. 同步keystone数据库,生成keystone所需的表 5. 启动keystone服务和校验服务状态 6. 创cron任务,配置定期清理过期的token 7. keystone创建user,tenant,role和endpoint 六、 Glance安装 1. Glance的安装 2. 配置glance-api服务 3. 配置glance-registry服务 4. 启动并校验glance服务 57 七、 Nova安装 59 1. nova的安装与配置 59 2. 安装和配置nova 60 八、 Neutron安装 63 1. neutron的安装与配置 63 2.Neutron使用二层组件 66 3. 配置OVS二层插件 67 4. 配置nova支持neutron 67 5. 启动neutron-server服务 68 6. 重启nova服务和neutron联动 69 7. 重启neutron-server 69 8. controller0上校验neutron的配置 69 九、 Horizon安装 71 1. Horizon组件的安装与配置 71 十、 Compute0安装nova 74 1. nova的安装与配置(compute0-10.20.0.30) 74 2. nova的安装与配置 75 十一、 Compute0安装neutron 78 1. neutron的安装与配置(compute0) 78 十二、 Network0安装neutron 83 1. neutron的安装与配置 83 十三、 新建网络 91 1. 配置安全组规则 91 2. 新建网络 92 3 .创建云主机 99 4 .分配浮动ip 101 十四、 心得体会 107
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值