一、Keystone的服务器端架构
- Keystone的服务器端提供了一些Restful API
- 同时提供了一些针对这些Restful API的过滤器
二、客户端发送HTTP请求流程
- 客户端创建一个Keystone Client对象,其实就是一个HTTP Client对象
- 直接请求服务器端的Restful API
三、Keystone提供的几种用户认证形式
- admin_token方式认证
这种认证定义在admin_token_auth过滤器中。 - 用户名密码方式认证
(1)本地认证
(2)Token认证
服务器端和客户端都会缓存用户的token
(3)外部认证
提供了两种token格式,UUID和PKI。
四、访问Openstack服务的流程
访问其他服务(如Cinder、Nova)的流程大致如下
- 创建Keystone Client对象。通过Keystone Client对象向Keystone服务器发送认证请求,申请用户Token。在用户Token中,可以提取Token ID和服务目录。
- 创建需要访问的Openstack组件的相应Client对象(如果需要访问Glance服务,则创建Glance Client对象)。根据Token中的服务目录,设置Client对象的endpoint等信息
- 当Client对象向Openstack服务发送HTTP请求时,OpenStack服务会通过auth_token过滤器向Keystone服务器发送认证请求。如果认证成功,OpenStack再调用相应的方法处理用户请求。