(弃)解读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 主要的改进包括采用了计算存储分离的架 ...
随机推荐
- 读取本地已有的.db数据库
public class MyDB extends SQLiteOpenHelper { // 数据库的缺省路径 private static String DB_PATH ; private sta ...
- 【驱动】linux设备驱动·扫盲
linux设备驱动 Linux系统把设备驱动分成字符设备.块设备和网络设备三种类型. 内核为设备驱动提供了注册和管理的接口,设备驱动还可以使用内核提供的其他功能以及访问内核资源. PCI局部总线 早期 ...
- 当music-list向上滑动的时候,设置layer层,随其滚动,覆盖图片,往下滚动时候,图片随着展现出来
1.layer层代码: <div class="bg-layer" ref="layer"></div> 2.在mounted()的时候 ...
- visual c++中预定义的宏
一.主要目标 (由于visual studio通常包含很多开发环境,通常将其中c/c++的ide称为visual c++ 20xx) 整理下visual c++ 2010下预定义的宏.做一下备忘和了解 ...
- HTML <meta> 标签 和 http-equiv
前言 经常在写HTML,但是对于meta 的设置却一直疏于关注. <meta> 是什么 <meta> 是一个HTML的标签(辅助性标签). 它的位置位于文档的头部 <h ...
- django模型相关的知识点
定义属性 概述: django根据属性的类型确定以下信息 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django会为表增加自动增长的主键列,每个模 ...
- django配置数据库
配置数据库 Django默认使用SQLite数据库 在settings.py文件中通过DATABASES选项进行数据库配置 配置MySQL Python3.x中安装的是PyMySQL 在__init_ ...
- Java API学习(一) ArrayList源码学习
ArrayList在平常用的还挺多的,用起来十分舒服,顺手.这里来学习一下它的源码. 类定义 下面是类的定义: public class ArrayList<E> extends Abst ...
- java 集合排序
Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...
- 基于云端的通用权限管理系统,SAAS服务,基于SAAS的权限管理,基于SAAS的单点登录SSO,企业单点登录,企业系统监控,企业授权认证中心
基于云端的通用权限管理系统 SAAS服务 基于SAAS的权限管理 基于SAAS的单点登录SSO 基于.Net的SSO,单点登录系统,提供SAAS服务 基于Extjs 4.2 的企业信息管理系统 基于E ...