设为首页 收藏本站
查看: 1067|回复: 0

[经验分享] (弃)解读Openstack Identity API v2.0

[复制链接]

尚未签到

发表于 2015-4-12 07:54:44 | 显示全部楼层 |阅读模式
    目前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
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-56145-1-1.html 上篇帖子: [zz]为 OpenStack Nova 制作 Ubuntu 镜像 下篇帖子: 【转】openstack架构详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表