keystone项目提供了用户管理,权限管理,用户认证等功能,还提供了ServiceCatalog,即Openstack中所有服务的endpoint。endpoint就是rest api的base URL。
keystone是openstack的入口,调用openstack Rest API都从keystone开始。
rest API流程
1)调用keystone Tokens API(/v3/auth/tokens, POST),认证用户并创建token.
2) api中会返回token和service catalog
3)用token和service catalog中的endpoint调用rest api(如nova api)
4) rest api会对用户提供的token进行验证
调用openstack rest api之前都要通过kestone tokens api拿到一个token,每个rest api请求头的'X-Auth-Token'字段中填入这个token。
token是一个随机字符串,由kyestone生成,代表一个已经通过认证的用户(通过它也可以拿到用户的各种信息,role, group等)。keystone返回的token是有有效期的,超过有效期后,用这个token调用rest api,会验证失败。
kwargs.setdefault('headers', {})['X-Auth-Token'] = self.auth_token
使用openstack的命令(nova, cinder,neutron,keystone),需要提供这几个参数(一般写在openrc文件)
OS_USERNAME
OS_PASSWORD
OS_TENANT_NAME
OS_AUTH_URL
其中OS_AUTH_URL就是keystone rest api的endpoint。这些信息就是用来在keystone中认证用户的。
需要认证的环节
openstack中的各种服务都需要认证(authentication)才能使用。openstack中的服务主要有数据库服务,rest api服务及rpc服务(