02-05 keystone源码分析更新中... 

6.1 Keystone API 

Keystone API与Openstack其他服务的API类似,也是基于ReSTFul HTTP实现的。

Keystone API划分为Admin API和Public API:

  • Public API不仅实现获取版本以及相应扩展信息的操作,同时包括获取Token以及Token租户信息的操作;
  • Admin API主要提供服务开发者使用,不仅可以完成Public API的操作,同时对User、Tenant、Role和Service Endpoint进行管理操作。

6.2 Router
Keystone Router主要实现上层API和底层服务的映射和转换功能,包括四种Router类型。 
(1) AdminRouter 
  负责将Admin API请求映射为相应的行为操作并转发至底层相应的服务执行; 
(2) PublicRouter 
  与AdminRouter类似; 
(3) PublicVersionRouter 
  对系统版本的请求API进行映射操作; 
(4) AdminVersionRouter 
  与PublicVersionRouter类似。 
6.3 Services
Keystone Service接收上层不同Router发来的操作请求,并根据不同后端驱动完成相应操作,主要包括四种类型; 
(1) Identity Service 

Identity Service提供关于用户和用户组的授权认证及相关数据。

Keystone-10.0.0支持ldap.core.Identity,Sql.Identity两种后端驱动,系统默认的是Sql.Identity;

Users:
用户这一概念在openstack中实际上是用来标识一个使用者(an individual API consumer)

一个用户必须被一个具体的domain拥有

所有的用户名不是全局唯一的,在同一个domain中用户名才唯一

Groups:

用户组是一个包含了一系列用户的容器,一个group必须被一个具体的domain拥有

所有的组名不是全局唯一的,在同一domain种组名才唯一
users和groups

 

 (2) Resource Service

Resouse服务提供关于projects和domains的数据 

projects
Projects(在v2.0中称之为Tenants)
在openstack中project代表资源的结合
一个project必须被一个具体的domain所拥有
所有的project都不是全局唯一的,仅仅在一个domain中project唯一
新建一个project没有指定domain,它将被添加到默认的domain中即default


Domains
Domains是一个更高级别的包含n个projects-users-groups的容器。
默认的Domains名为Default
projects和domains

相关文章: