(弃)解读Openstack Identity API v2.0
目前OpenStack社区提供了详尽的API文档,并配有丰富的说明和示例,关于Identity API v2查看这里, 关于Identity API v3请查看这里。
尽管现在官方已经不建议OpenStack Identity API v2.0,但是出于后向兼容考虑,目前的Keystone发行版仍支持v2版的API。v2版API是理解keystone功能的关键,v3 API作为v2 API的超集在原有基础上做了一些改动,这些改动与v3 API的详细解读将留待以后的文章完成。本文主要解读OpenStack Identity API v2.0的核心内容,在参考官方Reference的基础上做了相关筛选,可以作为更为精简的Identity API 功能参考手册。
1.概况
1.1 请求与响应的格式
明确请求格式
在请求文件头的Content-Type字段指定. 有两种可选格式:
JSON, Content-Type: application/json
XML,Content-Type: application/xml
规定响应格式
在请求文件头的Accept字段指定,可选值与Conten-Type相同,或者在请求URI之后添加.xml或.json扩展(该方法具有高优先级)。
示例——JSON 格式HTTP请求的头信息
POST /v2.0/tokens HTTP/1.1 方法 目标URL 协议
Host: identity.api.openstack.org 主机
Content-Type: application/json 请求的格式
Accept: application/xml 接收响应的格式
1.2 内容压缩
可以压缩请求或响应的body数据,具体的做法是分别在请求和响应头信息中下述字段指明压缩手段:
HTTP/1.1 Request Accept-Encoding: gzip
HTTP/1.1 Response Content-Encoding: gzip
1.3 显示容量限制(marker & limit)
可以在请求URI中指定limit和marker参数,这两个参数均是可选的。
marker参数代表了前一个列表中最后一项的ID。不同的内容项以更新时间排序,当更新时间不可用时,才以id排序。
请求中的limit参数限定了响应每一页的数据项容量,如下面的请求
GET http://identity.api.openstack.org/v2.0/1234/tenants?limit=1
规定了keystone服务器返回的每一页中只包含一个目标数据项。为了能够了解全部的数据项,服务器返回的信息在遵照客户端设置的分页容量同时提供"next"和"previous"字段,其内容分别是下一页和上一页的URL,利用这两个字段,客户端可以请求超过自己设定的分页容量的数据。
如果客户端请求中设置的响应页容量(limit)超过了服务器端部署时的配置限制的话,那么响应将会报413(overLimit)错误,如果客户端请求中设置的marker不是一个有效的ID的话,那么将会报404(itemNotFound)错误。
需要注意的是,当请求的对象集合是空集时,此时不会报404错误,此时客户端就会受到一个空的结果。
1.4 错误响应代码
identityFault 500, 400
serviceUnavailable 503
badRequest 400
unauthorized 401
overLimit 413
userDisabled 403
forbidden 403
itemNotFound 404
tenantConflict 409
2主要API汇总
2.1Client 操作
主要包括API 版本信息、扩展和令牌相关的查询操作。
GET / 获得所有API的版本信息
GET /v2.0 显示Identity API v2.0的详细信息
GET /v2.0/extensions 显示所有可用的扩展信息
GET /v2.0/extensions/{alias} 获得指定扩展的详细信息
POST /v2.0/tokens 身份认证,同时获取token
2.2Administrative操作
主要包括版本信息,扩展,用户和工程的查询操作,以及登录系统进行身份认证的令牌操作。
GET /v2.0 显示Identity API v2.0的详细信息
GET /v2.0/extensions 显示所有可用的extensions
GET /v2.0/extensions/{alias} 获取某一扩展的详细信息
POST /v2.0/tokens
身份认证,同时获取token
GET /v2.0/tokens/{tokenId}{?belongsTo}
验证令牌,同时确认该令牌属于指定租户
HEAD /v2.0/tokens/{tokenId}{?belongsTo}
验证令牌,确认该令牌属于指定租户,只收取响应的头信息,效率更高
GET /v2.0/users/{?name}
通过用户姓名获取某用户的具体信息
GET /v2.0/users/{user_id}
通过用户id来获取某用户的具体信息
GET /v2.0/users/{user_id}/roles
列出一个用户的所有角色
GET /v2.0/tenants{?marker,limit}
显示所有的租户
GET /v2.0/tenants{?marker,limit,name}
通过租户名称查询其详细信息
GET /v2.0/tenants/{tenantId}
通过租户ID查询其详细信息
GET /v2.0/tenants/{tenantId}/users/{userId}/roles
显示指定用户在指定工程上的所有角色
2.3OS-KSADM admin扩展
主要包括:用户、角色、项目和服务部分的操作
GET /v2.0/users
显示所有用户
POST /v2.0/users
添加一个用户
PUT /v2.0/users/{userId}
更新一个用户
DELETE /v2.0/users/{userId}
删除一个用户
GET /v2.0/users/{userId}/roles{?serviceId,marker,limit}
查看某用户全部角色
PUT /v2.0/users/{userId}/roles/OSKSADM/{roleId}
为用户添加角色
DELETE /v2.0/users/{userId}/roles/OSKSADM/{roleId}
删除用户的一个角色
GET /v2.0/OS-KSADM/roles
查看当前角色
GET /v2.0/OS-KSADM/roles/
查看所有角色
POST /v2.0/OS-KSADM/roles
添加角色
GET /v2.0/OS-KSADM/roles/{roleId}
根据角色ID获取角色信息
DELETE /v2.0/OS-KSADM/roles/{roleId}
删除一个角色
POST /v2.0/tenants
创建一个租户
POST /v2.0/tenants/{tenantId}
更新一个租户
DELETE /v2.0/tenants/{tenantId}
删除一个租户
GET /v2.0/tenants/{tenantId}/users{?marker,limit}
列出一个租户的所有用户
PUT /v2.0/tenants/{tenantId}/users/{userId}/roles/OS-KSADM/{roleId}
为指定租户中的指定用户添加指定角色
DELETE /v2.0/tenants/{tenantId}/users/{userId}/roles/OS-KSADM/{roleId}
删除租户中用户的某角色
GET /v2.0/OS-KSADM/services{?marker,limit}
显示所有服务
POST /v2.0/OS-KSADM/services{?marker,limit}
添加服务
GET /v2.0/OS-KSADM/services/{?name}
根据指定服务名查看服务信息
GET /v2.0/OS-KSADM/services/{serviceId}
根据指定服务ID查看服务信息
DELETE /v2.0/OS-KSADM/services/{serviceId
删除服务
2.4OS-KSCATALOG 扩展
主要包括对终端和终端模板的操作
GET /v2.0/tenants/{tenantId}/OSKSCATALOG/endpoints
列出一个租户的所有endpoints
POST /v2.0/tenants/{tenantId}/OSKSCATALOG/endpoint
为租户添加endpoint
GET /v2.0/tenants/{tenantId}/OSKSCATALOG/endpoints/{endpointId}
获取租户的特定endpoint
DELETE /v2.0/tenants/{tenantId}/OSKSCATALOG/ endpoints/{endpointId}
删除租户的特定endpoint
GET /v2.0/OS-KSCATALOG/endpointTemplates{?serviceId}
列出所有endpoint模板
POST /v2.0/OS-KSCATALOG/endpointTemplates{?serviceId}
添加endpoint模板
GET /v2.0/OS-KSCATALOG/endpointTemplates/{endpointTemplateId}
获取endpoint模板
PUT /v2.0/OS-KSCATALOG/endpointTemplates/{endpointTemplateId}
更新endpoint模板
DELETE /v2.0/OS-KSCATALOG/endpointTemplates/{endpointTemplateId}
删除endpoint模板
2.5OS-KSEC2 扩展
主要包括对EC2兼容的Credential的操作
GET /v2.0/users/{userId}/OS-KSADM/credentials{?marker,limit}
列出credentials
POST /v2.0/users/{userId}/OS-KSADM/credentials{?marker,limit}
为一个用户添加credential
GET /v2.0/users/{userId}/OS-KSADM/credentialsOSKSEC2:ec2Credentials
获取用户的credentials
POST /v2.0/users/{userId}/OS-KSADM/credentials/OSKSEC2:ec2Credentials
更新用户的credentials
DELETE /v2.0/users/{userId}/OS-KSADM/credentials/OSKSEC2:ec2Credentials
删除用户的credentials
GET /v2.0/users/{userId}/OS-KSADM/credentials/OSKSEC2:ec2Credentials/{type}{?type}
根据指定类型显示credentials
2.6OS-KSS3扩展
GET /v2.0/users/{userId}/OS-OS-KSS3/credentials{?marker,limit}
列出credentials
POST /v2.0/users/{userId}/OS-OS-KSS3/credentials{?marker,limit}
为一个用户添加credential
GET /v2.0/users/{userId}/OS-OS-KSS3/credentials/s3credentials
获取用户的credentials
POST /v2.0/users/{userId}/OS-OS-KSS3/credentials/s3credentials
更新用户的credentials
DELETE /v2.0/users/{userId}/OS-OS-KSS3/credentials/s3credentials
删除用户的credentials
GET /v2.0/users/{userId}/OS-OS-KSS3/credentials/s3credentials/{type}{?type}
根据指定类型显示credentials
2.7OS-KSVALIDATE扩展
GET /v2.0/OS-KSVALIDATE/token/validate{?belongsTo,HP-IDM-serviceId}
验证一个令牌,属于指定的租户和服务,返回对应客户的权限
HEAD /v2.0/OS-KSVALIDATE/token/validate{?belongsTo,HP-IDM-serviceId}
上一个API的高效版
GET /v2.0/OS-KSVALIDATE/token/endpoints{?HP-IDM-serviceId}
列出与一个令牌关联的endpoints
以下API v2.0请参考《Identity API v2.0》
RAX-GRPADM admin extensions
RAX-KSGRP admin extensions
RAX-KSKEY adminextensions
OpenStack Identity API参考资料
1. v3 版Python API
http://docs.openstack.org/developer/python-keystoneclient/using-api-v3.html
2. v3版API官方详解
https://github.com/openstack/identity-api/blob/master/v3/src/markdown/identity-api-v3.md
3. v2版API参考手册
http://docs.openstack.org/api/openstack-identity-service/2.0/content/
4. v2版Python API
http://docs.openstack.org/developer/python-keystoneclient/using-api-v2.html
(弃)解读Openstack Identity API v2.0的更多相关文章
- OpenStack Identity API v3 (CURRENT)
Table Of Contents Identity API v3 (CURRENT) Authentication and token management Password authenticat ...
- OpenStack Identity API v3
Table Of Contents OpenStack Identity API v3 What’s New in Version 3.7 What’s New in Version 3.6 What ...
- OpenStack Identity API v3 extensions (CURRENT)
Table Of Contents Identity API v3 extensions (CURRENT) OS-ENDPOINT-POLICY API Associate policy and e ...
- laravel Passport - 创建 REST API 用户认证以及Dingo/Api v2.0+Passport实现api认证
第一部分: 安装passport 使⽤ Composer 依赖包管理器安装 Passport : composer require laravel/passport 接下来,将 Passport 的服 ...
- laravel Passport - Dingo/Api v2.0+Passport 实现 api 认证
第一部分: 安装passport 使⽤ Composer 依赖包管理器安装 Passport : composer require laravel/passport 接下来,将 Passport 的服 ...
- Geocoding java调用百度地图API v2.0 图文 实例( 解决102错误)
如何使用? 第一步:申请ak(即获取密钥),若无百度账号则首先需要注册百度账号. 第二步,拼写发送http请求的url,注意需使用第一步申请的ak. 第三步,接收http请求返回的数据(支持json和 ...
- dingo/API 最新版 V2.0 之安装讲解
我发现关于dingo/API V2.0的资料少之又少,应该也是发布时间不久的原因.下面,我就来给大家讲解(翻译)下官方的英文文档,如果有说的不对的地方,请指正.先附上,官网wiki地址https:// ...
- 第一节: dingo/API 最新版 V2.0 之安装讲解(连载)
我发现关于dingo/API V2.0的资料少之又少,应该也是发布时间不久的原因.下面,我就来给大家讲解(翻译)下官方的英文文档,如果有说的不对的地方,请指正.先附上,官网wiki地址https:// ...
- POLARDB v2.0 技术解读
点击观看“POLARDB 2.0 升级发布会”:https://yq.aliyun.com/live/1136 回顾POLARDB 1.0 POLARDB 1.0 主要的改进包括采用了计算存储分离的架 ...
随机推荐
- 光照渲染[Unity]
http://www.unitymanual.com/m/Manual/RenderingPaths.html http://wenku.baidu.com/view/54eca9e09b896802 ...
- 【Java】Java复习笔记-第三部分
修饰符abstract 抽象的,定义框架不去实现,可以修饰类和方法 abstract修饰类: 会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型 抽象类 ...
- pthread之线程堆栈
转:http://blog.csdn.net/horstlinux/article/details/7666032 //先来讲说线程内存相关的东西,主要有下面几条: //进程中的所有的线程共享相同的地 ...
- python keras 神经网络框架 的使用以及实例
先吐槽一下这个基于theano的keras有多难装,反正我是在windows下折腾到不行(需要64bit,vs c++2015),所以自己装了一个双系统.这才感到linux系统的强大之初,难怪大公司都 ...
- with open
再考虑一个场景,要读取文件内容,并把年龄和名字的顺序交换存成新文件age_name.txt,这时可以同时打开两个文件:with open('name_age.txt', 'r') as fread, ...
- Android基础——Fragment控制切换多个页面
今天接着上一篇文章,讲解一下Fragment的控制,主要是切换View和页面替换等操作.还有就是如何获取Fragment的管理对象,以及与Activity的通信方式. (PS:新建的QQ群,有兴趣可以 ...
- docker探索-Docker 1.13 编排能力进化(十三)
简介 docker stack deploy和docker-compose up,这两个命令都是操作compose的yml文件的,有什么区别?想知道这个问题,看下面文章 https://yq.al ...
- WPF样式继承
场景:样式A和样式B的背景颜色一样,但是文字颜色不一样 <Style x:key="BaseStyle" TargetType="Button"> ...
- Postgres快速创建大量测试数据
DROP TABLE IF EXISTS color; CREATE TABLE color( cname ), remark ) ); ),) ,); 插入10000000数据之后,用时51秒 对于 ...
- oozie无法识别hadoopHA中的ns1
[hadoop@dwdev-name1 m_goods_sale_detail]$ oozie job -config job.properties -run Error: E1603 : java. ...