本帖最后由 nettman 于 2014-8-18 09:57 编辑
问题导读:
1.OpenStack的身份API是使用什么风格的Web服务接口来实现
2.OpenStack的身份包含哪些身份概念?
3.故障返回码错误代码含义是什么?
4.通过那个URI可以获取一个机密问题和答案给指定的用户?
5.OpenStack的身份API除了支持json数据的序列格式化,还支持什么格式?
1 内容简介OpenStack的身份允许客户获取令牌用于访问OpenStack的云服务。
2 一般API信息该OpenStack的身份API是使用REST风格的Web服务接口来实现。 所有的请求进行身份验证和操作对OpenStack的身份API应该TCP端口443上使用SSL的HTTP(HTTPS)来执行。
2.1 身份概念OpenStack的身份具有以下主要概念:
表1.1。 身份概念 | | | | 使用OpenStack的云服务一个人,系统或服务的数字表示。 OpenStack的身份验证服务验证传入的请求正在由谁声称要进行呼叫的用户。 用户可以登录,并且可以被分配令牌来访问资源。 用户可以直接分配给特定租户,并表现得好像它们是包含在该租户。 | | 数据所属的,是由拥有,并且通常仅通过使得用户能够出示证明自己的身份的用户已知的。 | | 在上下文OpenStack的身份,确认索赔的用户或真理的身份的行为。OpenStack的身份确认传入的请求正在由谁声称通过验证一组声称,用户正在来进行呼叫的用户。 这些说法最初是在一组凭据(用户名和密码,或者用户名和API密钥)的形式。 初始确认后,OpenStack的身份问题,用户令牌,用户可以再提供证明,使后续请求时,他们的身份已被验证。 | | 用于访问资源的文本的任意位。 每个标记都有一个范围,说明哪些资源是与它接触。 令牌可以随时被撤销,有效期为有限的持续时间。 而OpenStack的身份支持此版本基于令牌的认证,其目的是为它在未来支持更多的协议。 这样做的目的是为它是一个集成服务至上,而不是渴望成为一个完整的身份存储和管理解决方案。 | | 用于分组或分离的资源和/或标识对象的容器。 根据不同的服务运营商,租客可以映射到一个客户,帐户,组织或项目。 | | 一个OpenStack的服务,如计算(Nova),对象存储(Swift),或影像服务(Glance)。 一个服务提供的,通过它用户可以访问的资源和执行操作的一个或多个端点。 | | 通过网络访问的地址,通常是由一个URL,其中可访问的服务描述。 如果使用的模板的扩展,可以创建一个端点的模板,它代表所有耗材服务可跨区域的模板。 | | 一个用户承担执行一组特定的操作时,有个性。 角色包括一组权利和特权。 用户承担该角色继承这些权利和特权。 在OpenStack的身份,是签发给用户一个令牌包括角色列表中的用户可以承担。 正在调用该用户的服务决定他们如何解释所设定角色的用户拥有的和哪些操作或资源的每个角色授予访问权限。 它是由单独的服务,如计算服务和图像服务来分配这意味着这些角色。 至于标识服务而言,角色是由用户指定的任意名称。 |
2.2 请求/响应类型该OpenStack的身份API同时支持JSON和XML数据的序列化格式。 指定请求的格式是使用 Content-Type 头,并须为具有请求主体的操作。 响应格式可以在请求或者使用Accept头或添加的 。xml 或json的 扩展请求URI来指定。 注意,这是可能的响应进行使用从请求不同的格式序列。 如果没有指定响应格式,JSON是默认的。 如果同时使用一个 Accept 头和查询扩展指定了有冲突的格式,查询扩展优先。
2.3 内容压缩请求和响应体的数据我与以gzip压缩编码加速API调用和响应的交互性能。 这是使用 Accept-Encoding 头来自客户端的请求控制,通过在服务器响应中的 Content-Encoding 头指示。 除非头显式设置,编码默认为禁用 ​​。
2.4 分页集合为了减少负载上的服务,列表操作将返回在时间项的最大数量。 返回的最大项数由身份提供者确定。 导航集合,参数 limit 和 marker 可以在URI进行设置。 标记的参数是在前面的列表中的最后一个项目的ID。 项目是按更新时间排序。 当更新时间不可它们是由ID进行排序。 极限参数设置页面大小。 这两个参数是可选的。 如果客户端请求超出了其支持的部署超限的 limit (413)故障可能会被抛出。 使用无效的ID的标记将返回一个itemNotFound(404)故障。
| | 分页集合返回itemNotFound(404)故障时,集合为空——客户端应该期待一个空的集合。 |
为方便起见,集合包含原子“下一步”和“上一个”链接。 该列表中的第一个页面将不会包含“上一页”链接,在列表中的最后一页将不包含一个“下一个”链接。
2.5 版本
该OpenStack的身份API使用既是一个URI和MIME类型的版本控制方案。 在URI方案,路径的第一个元素包含了目标版本标识符。 MIME类型的版本控制方案使用HTTP内容协商,其中 接受 或 内容类型 标头包含一个MIME类型,其中包含的版本ID作为参数。 一个版本的MIME类型总是与基本MIME类型。 如果同时使用一个HTTP标头和一个URI,指定了版本冲突,该URI优先。
如果提出的请求没有在URI中指定的版本或通过HTTP头,那么多的选择响应(300)将按照提供的联系和MIME类型的可用版本。
新的特性和功能,不破坏API的兼容性将在API作为扩展当前版本的介绍(见下文)和URI和MIME类型将保持不变。 特性或功能的变化,会在必要的API兼容性休息,需要一个新的版本,这将导致URI和MIME类型的版本被更新。 当新的API版本发布,旧版本将被标记为 过时。 供应商应与开发商和合作伙伴合作,以确保有足够的时间迁移到新版本过时的版本已停产前。
应用程序可以通过对根URL的GET编程方式确定可用的API版本的认证系统返回。 请注意,该版本的资源采用Atom表示发出一个请求时,支持 接受 包含应用程序/原子+ XML页眉或通过添加一个。原子请求URI。 这使得标准的Atom客户跟踪版本号的变化。
您还可以通过对基础版本的URL发出GET获得有关特定版本的其他信息。 版本请求的URL应该总是最后以斜线(/)。 如果省略斜线,服务器可能会响应一个 302 重定向请求。 格式的扩展名可以被放置在斜线之后。 注意,这是一种特殊情况,不成立为其他的API请求。 一般情况下,如/ tenants.xml和/tenants/.xml请求等同处理。
详细版本响应包含指向两个人类可读和API服务的一个计算机处理的描述。 该机器可处理的说明上写的是Web应用程序描述语言(WADL)。
| | 如果有两种规格之间的差异,在WADL是权威的,因为它包含了最准确和最新的说明了API服务。 |
2.6 扩展该OpenStack的身份API是可扩展的。 扩展有两个目的:它们允许引入新的功能的API中,而不需要一个版本的变化,他们允许提出供应商特定的利基功能。 应用程序可以通过编程方式确定哪些分机都可以通过执行上的/扩展URI发出 GET请求 。 请注意,这是在一个API版本的扩展可能无法在另一个版本的要求。
每个扩展标识由两个独特的标识符,一个 命名空间 和一个 别名 。 另外一个扩展包含各种格式的文档链接。
扩展也可以通过其独特的别名分别查询。 这提供了简单的检查,如果延长可作为一个不可用的扩展将发出itemNotFound(404)响应的方法。
扩展可以定义新的数据类型,参数,动作,标题,状态,和资源。 在XML中,额外的元素和属性可以被定义。 这些元素必须在扩展的命名空间中定义。 在JSON,别名必须被使用。 卷元素是在 RS-META 命名空间中定义。 扩展头总是带有前缀 的X 其次是别名和破折号:(X-RS-META- 头1)。 参数必须带有前缀的扩展别名后面加上冒号。
| | 应用程序应该准备忽略包含扩展元素的响应数据。 此外,应用程序还应该验证可以延期办理提交扩展请求之前。 |
2.7 故障
当错误发生时,系统会返回一个HTTP错误响应代码表示错误的类型。 该系统还返回有关该故障的响应的正文的附加 ​​信息。 错误代码是为了方便响应的身体返回。 该消息部分返回一个人类可读的消息。 细节部分是可选的,并且可能包含有用的信息对于跟踪误差(如,一个堆栈跟踪)。
故障的根元素可能会因错误的类型改变。
下面的列表显示了相关的错误代码可能的故障类型。
从XML架构的角度来看,所有的API故障是基本故障类型的扩展名 identityFault 。当一个系统,结合XML到实际的类(如JAXB)的工作,一个人应该能够使用的 identityFault 作为“抓获全部”如果有个别的故障类型之间的区别没有兴趣。
3 客户端API操作
这些操作使客户能够获得API版本和扩展信息,获取身份验证令牌,并列出租户。
3.1 列表扩展
3.2 认证
身份API是一个基于REST的Web服务。 它的入口点的所有服务API。 要访问标识的API,你必须知道它的URL。
对身份的API每个REST请求需要X-AUTH令牌头。 客户端获取此令牌,随着网址到其他服务的API,通过对具有有效凭据身份API的第一个认证。 进行身份验证,您必须提供用户ID和密码或令牌。
如果认证令牌已过期,则返回一个 401 响应代码。
如果在请求中指定的令牌已过期,这个调用会返回一个 404 响应代码。
身份API将过期标记为无效令牌。
部署决定了过期的令牌存储。
4 客户端API操作
该OpenStack的身份管理API操作使服务开发者获取和验证访问令牌,管理用户,商户,角色和服务端点。
大多数管理API调用需要进行身份验证。 无需验证唯一可用的调用是调用来发现服务-让版本信息,WADL合同,开发指导,帮助,等等-并调用来验证并获得一个令牌。
验证是通过传递一个有效的令牌在X-Auth-Tokenオト头从客户端的请求进行的。 身份的API将验证令牌有(或属于具有用户)的 管理 角色。 请参阅自述文件或系统管理员指南,如何引导身份API和创建第一个管理员。
该OpenStack的身份管理API 2.0版调用是:
| | | | | | | | /v2.0/tokens/{tokenId}​{?belongsTo} | | | /v2.0/tokens/{tokenId}​{?belongsTo} | | | /v2.0/tokens/{tokenId}/endpoints | | | | /v2.0/users/​{?name} | | | | | | /v2.0/users/{user_id}/roles | | | | /v2.0/tenants​{?marker,​limit} | | | /v2.0/tenants​{?marker,​limit,​name} | | | | | | /v2.0/tenants/{tenantId}/users/{userId}/roles | | | | | |
5 OpenStack的身份扩展
| | | | | | | | /v2.0/users/{userId}/OS-OS-KSS3/credentials​{?marker,​limit} | | | /v2.0/users/{userId}/OS-OS-KSS3/credentials​{?marker,​limit} | | | /v2.0/users/{userId}/OS-OS-KSS3/credentials/OS-KSS3:s3Credentials | | | /v2.0/users/{userId}/OS-OS-KSS3/credentials/OS-KSS3:s3Credentials | | | /v2.0/users/{userId}/OS-OS-KSS3/credentials/OS-KSS3:s3Credentials | | | | /v2.0/OS-KSVALIDATE/token/validate​{?belongsTo,​HP-IDM-serviceId} | 检查该令牌是有效的,它属于指定的租户和服务ID。 返回权限为特定的客户端 | | /v2.0/OS-KSVALIDATE/token/validate​{?belongsTo,​HP-IDM-serviceId} | 检查该令牌是有效的,它属于指定的租户和服务ID,用于性能 | | /v2.0/OS-KSVALIDATE/token/endpoints​{?HP-IDM-serviceId} | | | | | |
5.1 OS-KSADM管理员分机
扩展业务
下面的调用是由操作系统KSADM管理员扩展支持:
| | | | | | | | | | | | | | | | | /v2.0/users/{userId}/OS-KSADM/enabled | | | /v2.0/users/{userId}/roles​{?serviceId} | | | /v2.0/users/{userId}/roles/OS-KSADM/{roleId} | | | /v2.0/users/{userId}/roles/OS-KSADM/{roleId} | | | /v2.0/users/{userId}/OS-KSADM/credentials | | | /v2.0/users/{userId}/OS-KSADM/credentials | | | /v2.0/users/{userId}/OS-KSADM/credentials/{credential-type} | | | /v2.0/users/{userId}/OS-KSADM/credentials/{credential-type} | | | /v2.0/users/{userId}/OS-KSADM/credentials/{credential-type} | | | | | | | | | | | | | /v2.0/tenants/{tenantId}/users​{?marker,​limit} | | | /v2.0/tenants/{tenantId}/users/{userId}/roles/OS-KSADM/{roleId} | | | /v2.0/tenants/{tenantId}/users/{userId}/roles/OS-KSADM/{roleId} | | | | /v2.0/OS-KSADM/roles​{?name} | | | /v2.0/OS-KSADM/roles​{?name} | | | /v2.0/OS-KSADM/roles/{roleId} | | | /v2.0/OS-KSADM/roles/{roleId} | | | | /v2.0/OS-KSADM/services​{?marker,​limit} | | | /v2.0/OS-KSADM/services​{?marker,​limit} | | | /v2.0/OS-KSADM/services/{serviceId} | | | /v2.0/OS-KSADM/services/{serviceId} | |
5.2 OS-KSCATALOG管理员分机
该OS-KSCATALOG延伸扩展了OpenStack的身份管理API 2.0版具有以下调用:
| | | | | /v2.0/OS-KSCATALOG/endpointTemplates​{?serviceId} | | | /v2.0/OS-KSCATALOG/endpointTemplates​{?serviceId} | | | /v2.0/OS-KSCATALOG/endpointTemplates/{endpointTemplateId} | | | /v2.0/OS-KSCATALOG/endpointTemplates/{endpointTemplateId} | | | | /v2.0/tenants/{tenantId}/OS-KSCATALOG/endpoints | | | /v2.0/tenants/{tenantId}/OS-KSCATALOG/endpoints | | | /v2.0/tenants/{tenantId}/OS-KSCATALOG/endpoints/{endpointId} | | | /v2.0/tenants/{tenantId}/OS-KSCATALOG/endpoints/{endpointId} | |
5.3 OS-KSEC2管理员分机
该OpenStack的EC2认证扩展增加了以下要求:
| | | | | /v2.0/users/{userId}/OS-KSADM/credentials | | | /v2.0/users/{userId}/OS-KSADM/credentials//OS-KSEC2:ec2Credentials | | | /v2.0/users/{userId}/OS-KSADM/credentials//OS-KSEC2:ec2Credentials | | | /v2.0/users/{userId}/OS-KSADM/credentials//OS-KSEC2:ec2Credentials | | | /v2.0/users/{userId}/OS-KSADM/credentials//OS-KSEC2:ec2Credentials | |
5.4 OS-KSS3管理员分机
| | | | /v2.0/users/{userId}/OS-OS-KSS3/credentials​{?marker,​limit} | | | /v2.0/users/{userId}/OS-OS-KSS3/credentials​{?marker,​limit} | | | /v2.0/users/{userId}/OS-OS-KSS3/credentials/OS-KSS3:s3Credentials | | | /v2.0/users/{userId}/OS-OS-KSS3/credentials/OS-KSS3:s3Credentials | | | /v2.0/users/{userId}/OS-OS-KSS3/credentials/OS-KSS3:s3Credentials | |
5.5 OS-KSVALIDATE管理员分机
| | | | /v2.0/OS-KSVALIDATE/token/validate​{?belongsTo,​HP-IDM-serviceId} | 检查该令牌是有效的,它属于指定的租户和服务ID。 返回权限为特定的客户端。 | | /v2.0/OS-KSVALIDATE/token/validate​{?belongsTo,​HP-IDM-serviceId} | 检查该令牌是有效的,它属于指定的租户和服务ID,用于性能。 | | /v2.0/OS-KSVALIDATE/token/endpoints​{?HP-IDM-serviceId} | |
6 HP扩展身份
| | | | | /v2.0/tokens/{tokenId}​{?belongsTo,​HP-IDM-serviceId} | 验证令牌,并且它属于指定的租户和服务。 返回有关特定客户端的权限。 | | /v2.0/tokens/{tokenId}​{?belongsTo,​HP-IDM-serviceId} | |
7 Rackspace公司扩展到OpenStack的身份7.1 RAX-GRPADM管理员分机
新的资源是在 / RAX-GRPADM/groups,使集团的管理创建。
| | | | | /v2.0/RAX-GRPADM/groups​{?marker,​limit,​name} | | | /v2.0/RAX-GRPADM/groups/{groupId} | | | /v2.0/RAX-GRPADM/groups/{groupId} | | | /v2.0/RAX-GRPADM/groups/{groupId}​{?marker,​limit,​marker,​limit} | | | /v2.0/RAX-GRPADM/groups/{groupId} | | | /v2.0/RAX-GRPADM/groups/{groupId}/users/{userId} | | | /v2.0/RAX-GRPADM/groups/{groupId}/users/{userId} | | | | | |
7.2 RAX-KSGRP管理员分机
Rackspace公司的API组服务扩展添加以下调用:
| | | | | /v2.0/users/{userId}/RAX-KSGRP | |
7.3 RAX-KSKEY管理员分机
在Rackspace的API密钥认证扩展增加了以下要求:
| | | | | /v2.0/users/{userId}/OS-RAX-KSKEY/credentials | | | /v2.0/users/{userId}/OS-RAX-KSKEY/credentials/​{?marker,​limit} | | | /v2.0/users/{userId}/OS-RAX-KSKEY/credentials/RAX-KSKEY:apiKeyCredentials | | | /v2.0/users/{userId}/OS-RAX-KSKEY/credentials/RAX-KSKEY:apiKeyCredentials | | | /v2.0/users/{userId}/OS-RAX-KSKEY/credentials/RAX-KSKEY:apiKeyCredentials | | | | | |
7.4 RAX-KSKEY apikeyCredentials扩展属性
该 apikeyCredentials 扩展属性支持Rackspace公司的风格的身份验证。
7.5 RAX-KSQA管理员分机
下面的操作是操作由Rackspace公司机密问题和答案延长支持列表:
| | | | | /v2.0/users/{userId}/RAX-KSQA/secretqa | | | /v2.0/users/{userId}/RAX-KSQA/secretqa | |
|