目前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的更多相关文章

  1. OpenStack Identity API v3 (CURRENT)

    Table Of Contents Identity API v3 (CURRENT) Authentication and token management Password authenticat ...

  2. 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 ...

  3. OpenStack Identity API v3 extensions (CURRENT)

    Table Of Contents Identity API v3 extensions (CURRENT) OS-ENDPOINT-POLICY API Associate policy and e ...

  4. laravel Passport - 创建 REST API 用户认证以及Dingo/Api v2.0+Passport实现api认证

    第一部分: 安装passport 使⽤ Composer 依赖包管理器安装 Passport : composer require laravel/passport 接下来,将 Passport 的服 ...

  5. laravel Passport - Dingo/Api v2.0+Passport 实现 api 认证

    第一部分: 安装passport 使⽤ Composer 依赖包管理器安装 Passport : composer require laravel/passport 接下来,将 Passport 的服 ...

  6. Geocoding java调用百度地图API v2.0 图文 实例( 解决102错误)

    如何使用? 第一步:申请ak(即获取密钥),若无百度账号则首先需要注册百度账号. 第二步,拼写发送http请求的url,注意需使用第一步申请的ak. 第三步,接收http请求返回的数据(支持json和 ...

  7. dingo/API 最新版 V2.0 之安装讲解

    我发现关于dingo/API V2.0的资料少之又少,应该也是发布时间不久的原因.下面,我就来给大家讲解(翻译)下官方的英文文档,如果有说的不对的地方,请指正.先附上,官网wiki地址https:// ...

  8. 第一节: dingo/API 最新版 V2.0 之安装讲解(连载)

    我发现关于dingo/API V2.0的资料少之又少,应该也是发布时间不久的原因.下面,我就来给大家讲解(翻译)下官方的英文文档,如果有说的不对的地方,请指正.先附上,官网wiki地址https:// ...

  9. POLARDB v2.0 技术解读

    点击观看“POLARDB 2.0 升级发布会”:https://yq.aliyun.com/live/1136 回顾POLARDB 1.0 POLARDB 1.0 主要的改进包括采用了计算存储分离的架 ...

随机推荐

  1. python(47):range和xrange的区别和联系

    range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列. 比如: >>> range(5)[0, 1, 2, ...

  2. Android 编程下 AlarmManager

    对应 AlarmManager 有一个 AlarmManagerServie 服务程序,该服务程序才是正真提供闹铃服务的,它主要维护应用程序注册的各类闹铃并适时的设置即将触发的闹铃给闹铃设备 ( 在系 ...

  3. C# IOCP服务器项目(学习)

    无论什么平台,编写支持高并发性的网络服务器,瓶颈往往出在I/O上,目前最高效的是采用Asynchronous I/O模型,Linux平台提供了epoll,Windows平台提供了I/O Complet ...

  4. 【Android】安卓闪电复习

    Intent An intent is an abstract description of an operation to be performed 一个Intent就是一次对将要执行的操作的抽象描 ...

  5. 【ARM】2410裸机系列-uart串口通信

    开发环境 (1)硬件平台:FS2410 (2)主机:Ubuntu 12.04 FS2410串口的原理图 串口UART寄存器配置   配置TXD0与RXD0(GPH2.GPH3) 设置波特率(UBRDI ...

  6. 基于HTML5功能强大的滑块幻灯片

    分享一款功能强大的HTML5滑块幻灯片.这是一款基于jQuery+HTML5实现的图片切换幻灯片代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <section cla ...

  7. 为什么说Thunderbird是最好的桌面RSS阅读器

    也许现在再讨论RSS阅读器似乎已经过时了,毕竟随着社交网络服务的发展,通过一个带有大众评分能力的社交网络(比如reddit),相比RSS的固定订阅而言,也许你能更快地在你所关心的话题上更快地获得新的资 ...

  8. You have not concluded your merge (MERGE_HEAD exists) git拉取失败

    本文转自:http://yijiebuyi.com/blog/5b55eb51ad49ce41e2de9c85dd4513ca.html 今天获取git线上仓库代码报了这个错误: zhangzhi@m ...

  9. [lsof]lsof查看哪些设备/文件被占用或者打开

    转自:http://blog.csdn.net/yuzhihui_no1/article/details/51767516 最近在查一个Bug,应用程序kill之后重启,总是会出现adc的设备open ...

  10. EhCache 配置信息

    How to Size Caches 官方文档:http://ehcache.org/documentation/configuration/cache-size [maxEntriesLocalHe ...