zoukankan      html  css  js  c++  java
  • (弃)解读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

     

     

  • 相关阅读:
    对我影响最大的老师
    秋季学习总结
    介绍自己
    搭建新环境的准备工作
    我的技术博客开通啦!!
    java数组及数组的插入,删除,冒泡算法
    包(package)以及面向对象三个基本特征(继承)的介绍
    常用的Arrays类和二维数组以及二分法的介绍
    构造方法、封装、关键字(this、static)和代码块的介绍
    类和对象的介绍
  • 原文地址:https://www.cnblogs.com/Security-Darren/p/3831256.html
Copyright © 2011-2022 走看看