身份认证 API v3 (当前)¶
身份认证服务生成身份验证令牌,允许访问 OpenStack 服务的 REST API。客户端获取此令牌以及其他服务 API 的 URL 端点,方法是向身份验证服务提供其有效的凭据。
每次向 OpenStack 服务发出 REST API 请求时,您都会在 X-Auth-Token 请求头中提供您的身份验证令牌。
与大多数 OpenStack 项目一样,OpenStack Identity 通过定义基于角色访问控制 (RBAC) 方法的策略规则来保护其 API。
身份认证服务的配置文件设置存储这些规则的 JSON 策略文件的名称和位置。
请注意,V3 API 为所有 GET 请求实现 HEAD。每个 HEAD 请求包含与相应的 GET API 相同的头信息和 HTTP 状态码。
有关身份认证 API 保护的信息,请参阅 使用基于角色访问控制 (RBAC) 进行身份认证 API 保护 在 OpenStack 云管理员指南中。
3.14 (Ussuri) 版本中的新特性¶
身份提供商的新属性
authorization_ttl列出用户组时的新属性
membership_expires_at能够持久化通过映射传递给联合用户的组员身份
添加了为用户创建、更新和删除联合属性的功能
3.13 (Train) 版本中的新特性¶
应用程序凭据的新参数 access_rules
用于查看访问规则的新只读 API /v3/users/{user_id}/access_rules
3.12 (Stein) 版本中的新特性¶
涉及身份验证收据的新可选多因素身份验证流程
3.11 (Rocky) 版本中的新特性¶
用于发现生效的限制模型的 /v3/limits-model 新端点
注册限制和项目限制中的新描述字段
项目限制的新 project_id 过滤器
项目详细查询的新参数 include_limits
3.10 (Queens) 版本中的新特性¶
引入了应用程序凭据 API。
引入了一个实验性的统一限制 API。
能够授予系统角色分配并获取系统范围的令牌。
3.9 (Queens) 版本中的新特性¶
向项目添加了
tags属性。用于与
tags属性交互的新 API。
3.8 (Ocata) 版本中的新特性¶
允许服务用户获取已过期的令牌。
在用户列表和组中用户列表中添加了
password_expires_at查询参数。
3.7 (Newton) 版本中的新特性¶
向用户响应对象添加了
password_expires_at字段。引入一个标志以绕过过期和撤销检查。
3.6 (Mitaka) 版本中的新特性¶
列出项目树的角色分配。
设置项目
is_domain属性使项目能够充当域。将
is_domain字段添加到项目范围的令牌响应中,以表示项目是否充当域。启用或禁用项目层次结构中的子树。
删除项目层次结构中的子树。
针对范围限定于指定
admin project的令牌的附加标识符。将
domain_id过滤器添加到列出用户项目一个角色可以通过 role_inference 规则暗示另一个角色。
增强列出角色分配,以选择性地提供实体的名称。
可以检索特定域配置选项的默认值。
分配可以指定为继承的,导致分配放置在任何子项目上。
支持特定于域的角色。
支持
enabled和id作为列出身份提供商时的可选属性进行过滤。
3.5 (Liberty) 版本中的新特性¶
向列出凭据添加了
type可选属性。向列出端点添加了
region_id可选属性。向项目添加了
is_domain可选属性。当前设置此属性不起作用,它是为将来的使用保留的。
3.4 (Kilo) 版本中的新特性¶
对于无令牌授权,作用域信息可以设置在请求头中。
向项目添加了
parent_id可选属性。这使得构建项目的层次结构成为可能。为域实体添加了特定于域的配置管理。
删除了
regions的url可选属性。此属性仅用于 keystone-to-keystone 联合的实验阶段,并且已被通过使服务提供商条目在服务目录中拥有自己的条目所取代。JSON Home 支持现在将指示资源的状态,如果它不稳定且当前。
3.3 (Juno) 版本中的新特性¶
这些功能自 2014 年 9 月 4 日起被认为是稳定的。
从服务定义中包含到服务目录中的
name可选变量的添加。引入了一个独立的调用来检索服务目录。
引入了对 JSON Home 的支持。
引入了一个标准调用来检索令牌的可能项目和域范围目标。
向
regions添加了url可选属性。
3.2 (Icehouse) 版本中的新特性¶
这些功能自 2014 年 1 月 23 日起被认为是稳定的。
引入了一种在令牌验证期间退出目录信息的方法
引入了一个区域资源,用于构建服务端点组的层次容器
支持字符串属性上的不精确过滤
列出集合可能表明仅提供数据的子集,如果特定部署限制了查询可以返回的条目数
3.1 (Havana) 版本中的新特性¶
这些功能自 2013 年 7 月 18 日起被认为是稳定的。
如果没有指定项目并且没有对其默认项目属性指定的项目进行授权,则会发出没有明确授权范围的令牌
引入了一个通用的调用来获取角色分配,并按用户、组、项目、域和角色进行过滤
引入了一种在创建令牌期间退出目录信息的方法
将可选的绑定信息添加到令牌结构
3.0 (Grizzly) 版本中的新特性¶
这些功能自 2013 年 2 月 20 日起被认为是稳定的。
以前的“Service”和“Admin”API(包括以前在 v2 OS-KSADM 扩展中定义的 CRUD 操作)合并到一个核心 API 中
“Tenants”现在被称为“projects”
“Groups”:表示用户集合的容器
“Domains”:项目、用户和组的高级容器
“Policies”:策略引擎规则集的集中存储库
“Credentials”:每个用户的通用凭据存储(例如,EC2、PKI、SSH 等)
角色可以在域级别或项目级别授予
用户、组和项目名称只需要在其所属域内唯一
检索您的项目列表(以前是
GET /tenants)现在明确基于您的用户 ID:GET /users/{user_id}/projects令牌明确表示用户+项目或用户+域对
使用 HTTP
PATCH方法执行部分更新令牌 ID 值不再出现在 URL 中
关系¶
以下操作中的条目包含关系链接,该链接显示为有效的 URI,但实际上是 URN(统一资源名称),类似于 GUID,但它使用 URI 语法以便于阅读。这些链接不会解析为任何有效内容,但存在于显示关系中。
身份认证 API 操作¶
此页面按以下顺序列出身份认证 API 操作
身份验证和令牌管理¶
身份认证服务会根据身份验证凭据生成令牌。令牌代表用户的经过身份验证的身份,并可选地授予对特定项目、域或部署系统的授权。
身份验证请求的主体必须包含一个有效负载,该有效负载指定身份验证方法(通常只是 password 或 token)、凭据以及可选的授权范围。您可以将令牌限定为项目、域、部署系统,或者令牌可以不限定范围。您不能将令牌限定为多个范围目标。
令牌具有 ID,身份认证 API 在 X-Subject-Token 响应头中返回该 ID。
在多因素身份验证 (MFA) 的情况下,需要提供多个身份验证方法才能进行身份验证。从 v3.12 开始,由于 MFA 规则仅部分满足而导致的故障将导致响应头 Openstack-Auth-Receipt 中返回身份验证收据 ID,以及详细说明收据本身和缺少的身份验证方法的响应主体。在后续身份验证请求中提供 Openstack-Auth-Receipt 头中的身份验证收据 ID,并提供缺少的身份验证方法,将通过重用第一次请求中成功的身份验证方法来生成有效的令牌。这允许 MFA 身份验证成为一个多步骤过程。
获得身份验证令牌后,您可以
向其他 OpenStack 服务发出 REST API 请求。您在
X-Auth-Token请求头中提供您的身份验证令牌的 ID。验证您的身份验证令牌并列出您的令牌授予您访问权限的域、项目、角色和端点。
使用您的令牌请求针对不同域和项目限定范围的另一个令牌。
强制立即撤销令牌。
列出已撤销的公钥基础设施 (PKI) 令牌。
在身份认证 API 服务的 v3.7 版本中,添加了两个新的配置选项:[resource] admin_project_name 和 [resource] admin_project_domain_name。这些选项表示只有云管理员才能访问的项目。当处理限定为管理项目的令牌的身份验证请求时,令牌中将包含一个额外的字段 {is_admin_project: True}。附加字段可用于编写评估对 API 的访问控制的策略规则。
或者,在 v3.10 中,身份认证 API 服务引入了系统角色分配和系统范围令牌的概念。影响部署系统的 API 需要系统范围令牌。
身份认证 API 认为过期的令牌无效,这由部署的配置确定。
这些身份验证错误可能发生
身份验证错误
响应代码 |
描述 |
|
身份认证服务未能按预期解析请求。发生以下错误之一
|
|
发生以下错误之一
|
|
身份已成功验证,但未被授权执行请求的操作。 |
|
由于无法按 ID 找到引用的实体,操作失败。对于 POST 请求,引用的实体可能在请求体中而不是资源路径中指定。 |
|
POST 或 PATCH 操作失败。例如,客户端尝试更新实体的唯一属性,该属性与同一集合中另一个实体的属性冲突。 或者,客户端对具有用户定义唯一属性的集合执行了两次创建操作。例如,客户端两次对用户实体的唯一、用户定义的名称属性发出了 POST |
验证身份并生成令牌。使用密码身份验证方法。授权是无范围的。
请求体必须包含一个有效负载,指定身份验证方法,即 password,以及用户(通过 ID 或名称)和密码凭据。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/auth_tokens
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
nocatalog(可选) |
查询 |
字符串 |
(从 v3.1 开始)nocatalog 仅适用于有范围的令牌。对于无范围的令牌,身份验证响应始终不包括服务目录。 |
domain |
body |
对象 |
一个 |
name (可选) |
body |
字符串 |
用户名。如果您未指定用户的 ID,则需要。如果您指定用户名,还必须指定域(通过 ID 或名称)。 |
auth |
body |
对象 |
一个 |
user |
body |
对象 |
一个 |
password |
body |
对象 |
包含身份验证信息的 |
id (可选) |
body |
字符串 |
用户的 ID。如果您未指定用户名,则需要。 |
identity |
body |
对象 |
一个 |
方法 |
body |
数组 |
身份验证方法。对于密码身份验证,请指定 |
示例¶
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"name": "admin",
"domain": {
"name": "Default"
},
"password": "devstacker"
}
}
}
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Subject-Token |
标头 |
字符串 |
身份验证令牌。身份验证响应在响应头中而不是响应体中返回令牌 ID。 |
domain |
body |
对象 |
一个 |
方法 |
body |
数组 |
身份验证方法。对于密码身份验证,请指定 |
expires_at |
body |
字符串 |
令牌过期的时间和日期。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, 一个 |
令牌 |
body |
对象 |
一个 |
user |
body |
对象 |
一个 |
audit_ids |
body |
数组 |
一个或两个审计 ID 的列表。审计 ID 是一个唯一的、随机生成的、URL 安全的字符串,可用于跟踪令牌。第一个审计 ID 是令牌的当前审计 ID。第二个审计 ID 仅存在于重新作用域的令牌中,并且是令牌重新作用域之前的审计 ID。重新作用域的令牌是指与相同或不同作用域交换的令牌。您可以使用这些审计 ID 来跟踪令牌或多个请求和端点上的令牌链的使用情况,而无需向非特权用户公开令牌 ID。 |
issued_at |
body |
字符串 |
令牌签发的时间和日期。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, |
id (可选) |
body |
字符串 |
用户的 ID。如果您未指定用户名,则需要。 |
name (可选) |
body |
字符串 |
用户名。如果您未指定用户的 ID,则需要。如果您指定用户名,还必须指定域(通过 ID 或名称)。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"token": {
"methods": [
"password"
],
"expires_at": "2015-11-06T15:32:17.893769Z",
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "423f19a4ac1e4f48bbb4180756e6eb6c",
"name": "admin",
"password_expires_at": null
},
"audit_ids": [
"ZzZwkUflQfygX7pdYDBCQQ"
],
"issued_at": "2015-11-06T14:32:17.893797Z"
}
}
验证身份并生成令牌。使用密码身份验证方法,并将授权范围限定为项目、域或系统。
请求体必须包含一个有效负载,指定 password 身份验证方法,其中包括凭据,以及 project、domain 或 system 授权范围。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/auth_tokens
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
nocatalog(可选) |
查询 |
字符串 |
(从 v3.1 开始)身份验证响应不包括服务目录。默认情况下,响应包括服务目录。 |
name (可选) |
body |
字符串 |
用户名。如果您未指定用户的 ID,则需要。如果您指定用户名,还必须指定域(通过 ID 或名称)。 |
auth |
body |
对象 |
一个 |
user |
body |
对象 |
一个 |
scope (可选) |
body |
字符串 |
授权范围,包括系统(从 v3.10 开始)、项目或域(从 v3.4 开始)。如果在同一个请求中指定了多个范围(例如, |
password |
body |
对象 |
包含身份验证信息的 |
id (可选) |
body |
字符串 |
用户的 ID。如果您未指定用户名,则需要。 |
identity |
body |
对象 |
一个 |
方法 |
body |
数组 |
身份验证方法。对于密码身份验证,请指定 |
系统范围示例¶
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"password": "devstacker"
}
}
},
"scope": {
"system": {
"all": true
}
}
}
}
使用域 ID 作用域的域示例¶
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"password": "devstacker"
}
}
},
"scope": {
"domain": {
"id": "default"
}
}
}
}
使用域名称作用域的域示例¶
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"password": "devstacker"
}
}
},
"scope": {
"domain": {
"name": "Default"
}
}
}
}
使用项目 ID 作用域的项目示例¶
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"password": "devstacker"
}
}
},
"scope": {
"project": {
"id": "a6944d763bf64ee6a275f1263fae0352"
}
}
}
}
使用项目名称作用域的项目示例¶
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"password": "devstacker"
}
}
},
"scope": {
"project": {
"domain": {
"id": "default"
},
"name": "admin"
}
}
}
}
Response¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Subject-Token |
标头 |
字符串 |
身份验证令牌。身份验证响应在响应头中而不是响应体中返回令牌 ID。 |
region_id |
body |
字符串 |
(从 v3.2 开始)包含服务端点的区域的 ID。 |
方法 |
body |
数组 |
身份验证方法。对于密码身份验证,请指定 |
roles |
body |
数组 |
一个 |
url |
body |
字符串 |
端点 URL。 |
region |
body |
字符串 |
(在 v3.2 中已弃用)服务端点的地理位置。 |
令牌 |
body |
对象 |
一个 |
expires_at |
body |
字符串 |
令牌过期的时间和日期。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, 一个 |
system(可选) |
body |
对象 |
一个 |
domain(可选) |
body |
对象 |
一个 |
project(可选) |
body |
对象 |
一个 |
issued_at |
body |
字符串 |
令牌签发的时间和日期。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, |
catalog |
body |
数组 |
一个 |
user |
body |
对象 |
一个 |
audit_ids |
body |
数组 |
一个或两个审计 ID 的列表。审计 ID 是一个唯一的、随机生成的、URL 安全的字符串,可用于跟踪令牌。第一个审计 ID 是令牌的当前审计 ID。第二个审计 ID 仅存在于重新作用域的令牌中,并且是令牌重新作用域之前的审计 ID。重新作用域的令牌是指与相同或不同作用域交换的令牌。您可以使用这些审计 ID 来跟踪令牌或多个请求和端点上的令牌链的使用情况,而无需向非特权用户公开令牌 ID。 |
接口 |
body |
字符串 |
接口类型,描述端点的可见性。值为:- |
endpoints |
body |
数组 |
一个 |
type |
body |
字符串 |
端点类型。 |
id (可选) |
body |
字符串 |
用户的 ID。如果您未指定用户名,则需要。 |
name (可选) |
body |
字符串 |
用户名。如果您未指定用户的 ID,则需要。如果您指定用户名,还必须指定域(通过 ID 或名称)。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
系统范围示例¶
{
"token": {
"audit_ids": [
"3T2dc1CGQxyJsHdDu1xkcw"
],
"catalog": [
{
"endpoints": [
{
"id": "068d1b359ee84b438266cb736d81de97",
"interface": "public",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "8bfc846841ab441ca38471be6d164ced",
"interface": "admin",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "beb6d358c3654b4bada04d4663b640b9",
"interface": "internal",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
}
],
"type": "identity",
"id": "050726f278654128aba89757ae25950c",
"name": "keystone"
}
],
"expires_at": "2015-11-07T02:58:43.578887Z",
"issued_at": "2015-11-07T01:58:43.578929Z",
"methods": [
"password"
],
"roles": [
{
"id": "51cc68287d524c759f47c811e6463340",
"name": "admin"
}
],
"system": {
"all": true
},
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"name": "admin",
"password_expires_at": "2016-11-06T15:32:17.000000"
}
}
}
域范围示例¶
{
"token": {
"audit_ids": [
"3T2dc1CGQxyJsHdDu1xkcw"
],
"catalog": [
{
"endpoints": [
{
"id": "068d1b359ee84b438266cb736d81de97",
"interface": "public",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "8bfc846841ab441ca38471be6d164ced",
"interface": "admin",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "beb6d358c3654b4bada04d4663b640b9",
"interface": "internal",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
}
],
"type": "identity",
"id": "050726f278654128aba89757ae25950c",
"name": "keystone"
}
],
"domain": {
"id": "default",
"name": "Default"
},
"expires_at": "2015-11-07T02:58:43.578887Z",
"issued_at": "2015-11-07T01:58:43.578929Z",
"methods": [
"password"
],
"roles": [
{
"id": "51cc68287d524c759f47c811e6463340",
"name": "admin"
}
],
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"name": "admin",
"password_expires_at": "2016-11-06T15:32:17.000000"
}
}
}
项目范围示例¶
{
"token": {
"audit_ids": [
"3T2dc1CGQxyJsHdDu1xkcw"
],
"catalog": [
{
"endpoints": [
{
"id": "068d1b359ee84b438266cb736d81de97",
"interface": "public",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "8bfc846841ab441ca38471be6d164ced",
"interface": "admin",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "beb6d358c3654b4bada04d4663b640b9",
"interface": "internal",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
}
],
"type": "identity",
"id": "050726f278654128aba89757ae25950c",
"name": "keystone"
}
],
"expires_at": "2015-11-07T02:58:43.578887Z",
"is_domain": false,
"issued_at": "2015-11-07T01:58:43.578929Z",
"methods": [
"password"
],
"project": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "a6944d763bf64ee6a275f1263fae0352",
"name": "admin"
},
"roles": [
{
"id": "51cc68287d524c759f47c811e6463340",
"name": "admin"
}
],
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"name": "admin",
"password_expires_at": "2016-11-06T15:32:17.000000"
}
}
}
验证身份并生成令牌。使用密码身份验证方法,并使用显式无范围授权。
请求体必须包含一个有效负载,指定 password 身份验证方法、凭据和 unscoped 授权范围。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/auth_tokens
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
nocatalog(可选) |
查询 |
字符串 |
(从 v3.1 开始)nocatalog 仅适用于有范围的令牌。对于无范围的令牌,身份验证响应始终不包括服务目录。 |
name (可选) |
body |
字符串 |
用户名。如果您未指定用户的 ID,则需要。如果您指定用户名,还必须指定域(通过 ID 或名称)。 |
auth |
body |
对象 |
一个 |
user |
body |
对象 |
一个 |
scope (可选) |
body |
字符串 |
授权范围(从 v3.4 开始)。指定 |
password |
body |
对象 |
包含身份验证信息的 |
id (可选) |
body |
字符串 |
用户的 ID。如果您未指定用户名,则需要。 |
identity |
body |
对象 |
一个 |
方法 |
body |
数组 |
身份验证方法。对于密码身份验证,请指定 |
示例¶
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"password": "devstacker"
}
}
},
"scope": "unscoped"
}
}
Response¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Subject-Token |
标头 |
字符串 |
身份验证令牌。身份验证响应在响应头中而不是响应体中返回令牌 ID。 |
domain |
body |
对象 |
一个 |
方法 |
body |
数组 |
身份验证方法。对于密码身份验证,请指定 |
roles |
body |
数组 |
一个 |
expires_at |
body |
字符串 |
令牌过期的时间和日期。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, 一个 |
令牌 |
body |
对象 |
一个 |
user |
body |
对象 |
一个 |
audit_ids |
body |
数组 |
一个或两个审计 ID 的列表。审计 ID 是一个唯一的、随机生成的、URL 安全的字符串,可用于跟踪令牌。第一个审计 ID 是令牌的当前审计 ID。第二个审计 ID 仅存在于重新作用域的令牌中,并且是令牌重新作用域之前的审计 ID。重新作用域的令牌是指与相同或不同作用域交换的令牌。您可以使用这些审计 ID 来跟踪令牌或多个请求和端点上的令牌链的使用情况,而无需向非特权用户公开令牌 ID。 |
issued_at |
body |
字符串 |
令牌签发的时间和日期。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, |
id (可选) |
body |
字符串 |
用户的 ID。如果您未指定用户名,则需要。 |
name (可选) |
body |
字符串 |
用户名。如果您未指定用户的 ID,则需要。如果您指定用户名,还必须指定域(通过 ID 或名称)。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"token": {
"methods": [
"password"
],
"expires_at": "2015-11-09T01:42:57.527363Z",
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"name": "admin",
"password_expires_at": null
},
"audit_ids": [
"lC2Wj1jbQe-dLjLyOx4qPQ"
],
"issued_at": "2015-11-09T00:42:57.527404Z"
}
}
验证身份并生成令牌。使用令牌身份验证方法。授权是无范围的。
在请求体中,提供令牌 ID。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/auth_tokens
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
nocatalog(可选) |
查询 |
字符串 |
(从 v3.1 开始)nocatalog 仅适用于有范围的令牌。对于无范围的令牌,身份验证响应始终不包括服务目录。 |
identity |
body |
对象 |
一个 |
令牌 |
body |
对象 |
一个 |
id |
body |
字符串 |
一个令牌 ID。 |
auth |
body |
对象 |
一个 |
方法 |
body |
数组 |
身份验证方法。对于令牌身份验证,请指定 |
示例¶
{
"auth": {
"identity": {
"methods": [
"token"
],
"token": {
"id": "'$OS_TOKEN'"
}
}
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Subject-Token |
标头 |
字符串 |
身份验证令牌。身份验证响应在响应头中而不是响应体中返回令牌 ID。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"token": {
"methods": [
"token"
],
"expires_at": "2015-11-05T22:00:11.000000Z",
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "10a2e6e717a245d9acad3e5f97aeca3d",
"name": "admin",
"password_expires_at": null
},
"audit_ids": [
"mAjXQhiYRyKwkB4qygdLVg"
],
"issued_at": "2015-11-05T21:00:33.819948Z"
}
}
验证身份并生成令牌。使用令牌身份验证方法,并将授权范围限定为项目、域或系统。
请求体必须包含一个有效负载,指定 token 身份验证方法,其中包括令牌,以及 project、domain 或 system 授权范围。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/auth_tokens
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
nocatalog(可选) |
查询 |
字符串 |
(从 v3.1 开始)身份验证响应不包括服务目录。默认情况下,响应包括服务目录。 |
方法 |
body |
数组 |
身份验证方法。对于令牌身份验证,请指定 |
auth |
body |
对象 |
一个 |
令牌 |
body |
对象 |
一个 |
audit_ids |
body |
数组 |
一个或两个审计 ID 的列表。审计 ID 是一个唯一的、随机生成的、URL 安全的字符串,可用于跟踪令牌。第一个审计 ID 是令牌的当前审计 ID。第二个审计 ID 仅存在于重新作用域的令牌中,并且是令牌重新作用域之前的审计 ID。重新作用域的令牌是指与相同或不同作用域交换的令牌。您可以使用这些审计 ID 来跟踪令牌或多个请求和端点上的令牌链的使用情况,而无需向非特权用户公开令牌 ID。 |
scope (可选) |
body |
字符串 |
授权范围,包括系统(从 v3.10 开始)、项目或域(从 v3.4 开始)。如果在同一个请求中指定了多个范围(例如, |
id |
body |
字符串 |
一个令牌 ID。 |
identity |
body |
对象 |
一个 |
系统范围示例¶
{
"auth": {
"identity": {
"methods": [
"token"
],
"token": {
"id": "'$OS_TOKEN'"
}
},
"scope": {
"system": {
"all": true
}
}
}
}
使用域 ID 作用域的域示例¶
{
"auth": {
"identity": {
"methods": [
"token"
],
"token": {
"id": "'$OS_TOKEN'"
}
},
"scope": {
"domain": {
"id": "default"
}
}
}
}
使用域名称作用域的域示例¶
{
"auth": {
"identity": {
"methods": [
"token"
],
"token": {
"id": "'$OS_TOKEN'"
}
},
"scope": {
"domain": {
"name": "Default"
}
}
}
}
使用项目 ID 作用域的项目示例¶
{
"auth": {
"identity": {
"methods": [
"token"
],
"token": {
"id": "'$OS_TOKEN'"
}
},
"scope": {
"project": {
"id": "a6944d763bf64ee6a275f1263fae0352"
}
}
}
}
使用项目名称作用域的项目示例¶
{
"auth": {
"identity": {
"methods": [
"token"
],
"token": {
"id": "'$OS_TOKEN'"
}
},
"scope": {
"project": {
"domain": {
"id": "default"
},
"name": "admin"
}
}
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Subject-Token |
标头 |
字符串 |
身份验证令牌。身份验证响应在响应头中而不是响应体中返回令牌 ID。 |
region_id |
body |
字符串 |
(从 v3.2 开始)包含服务端点的区域的 ID。 |
方法 |
body |
数组 |
身份验证方法。对于密码身份验证,请指定 |
roles |
body |
数组 |
一个 |
url |
body |
字符串 |
端点 URL。 |
region |
body |
字符串 |
(在 v3.2 中已弃用)服务端点的地理位置。 |
令牌 |
body |
对象 |
一个 |
expires_at |
body |
字符串 |
令牌过期的时间和日期。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, 一个 |
system(可选) |
body |
对象 |
一个 |
domain(可选) |
body |
对象 |
一个 |
project(可选) |
body |
对象 |
一个 |
issued_at |
body |
字符串 |
令牌签发的时间和日期。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, |
catalog |
body |
数组 |
一个 |
user |
body |
对象 |
一个 |
audit_ids |
body |
数组 |
一个或两个审计 ID 的列表。审计 ID 是一个唯一的、随机生成的、URL 安全的字符串,可用于跟踪令牌。第一个审计 ID 是令牌的当前审计 ID。第二个审计 ID 仅存在于重新作用域的令牌中,并且是令牌重新作用域之前的审计 ID。重新作用域的令牌是指与相同或不同作用域交换的令牌。您可以使用这些审计 ID 来跟踪令牌或多个请求和端点上的令牌链的使用情况,而无需向非特权用户公开令牌 ID。 |
接口 |
body |
字符串 |
接口类型,描述端点的可见性。值为:- |
endpoints |
body |
数组 |
一个 |
type |
body |
字符串 |
端点类型。 |
id (可选) |
body |
字符串 |
用户的 ID。如果您未指定用户名,则需要。 |
name (可选) |
body |
字符串 |
用户名。如果您未指定用户的 ID,则需要。如果您指定用户名,还必须指定域(通过 ID 或名称)。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
系统范围示例¶
{
"token": {
"audit_ids": [
"3T2dc1CGQxyJsHdDu1xkcw",
"oppr9r6pQo6mWb5Ji4zgwg"
],
"catalog": [
{
"endpoints": [
{
"id": "068d1b359ee84b438266cb736d81de97",
"interface": "public",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "8bfc846841ab441ca38471be6d164ced",
"interface": "admin",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "beb6d358c3654b4bada04d4663b640b9",
"interface": "internal",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
}
],
"type": "identity",
"id": "050726f278654128aba89757ae25950c",
"name": "keystone"
}
],
"expires_at": "2015-11-07T02:58:43.578887Z",
"issued_at": "2015-11-07T01:58:43.578929Z",
"methods": [
"token",
"password"
],
"roles": [
{
"id": "51cc68287d524c759f47c811e6463340",
"name": "admin"
}
],
"system": {
"all": true
},
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"name": "admin",
"password_expires_at": "2016-11-06T15:32:17.000000"
}
}
}
域范围示例¶
{
"token": {
"audit_ids": [
"3T2dc1CGQxyJsHdDu1xkcw",
"oppr9r6pQo6mWb5Ji4zgwg"
],
"catalog": [
{
"endpoints": [
{
"id": "068d1b359ee84b438266cb736d81de97",
"interface": "public",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "8bfc846841ab441ca38471be6d164ced",
"interface": "admin",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "beb6d358c3654b4bada04d4663b640b9",
"interface": "internal",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
}
],
"type": "identity",
"id": "050726f278654128aba89757ae25950c",
"name": "keystone"
}
],
"domain": {
"id": "default",
"name": "Default"
},
"expires_at": "2015-11-07T02:58:43.578887Z",
"issued_at": "2015-11-07T01:58:43.578929Z",
"methods": [
"token",
"password"
],
"roles": [
{
"id": "51cc68287d524c759f47c811e6463340",
"name": "admin"
}
],
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"name": "admin",
"password_expires_at": "2016-11-06T15:32:17.000000"
}
}
}
项目范围示例¶
{
"token": {
"audit_ids": [
"3T2dc1CGQxyJsHdDu1xkcw",
"oppr9r6pQo6mWb5Ji4zgwg"
],
"catalog": [
{
"endpoints": [
{
"id": "068d1b359ee84b438266cb736d81de97",
"interface": "public",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "8bfc846841ab441ca38471be6d164ced",
"interface": "admin",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "beb6d358c3654b4bada04d4663b640b9",
"interface": "internal",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
}
],
"type": "identity",
"id": "050726f278654128aba89757ae25950c",
"name": "keystone"
}
],
"expires_at": "2015-11-07T02:58:43.578887Z",
"is_domain": false,
"issued_at": "2015-11-07T01:58:43.578929Z",
"methods": [
"token",
"password"
],
"project": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "a6944d763bf64ee6a275f1263fae0352",
"name": "admin"
},
"roles": [
{
"id": "51cc68287d524c759f47c811e6463340",
"name": "admin"
}
],
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"name": "admin",
"password_expires_at": "2016-11-06T15:32:17.000000"
}
}
}
验证身份并生成令牌。使用令牌身份验证方法,并使用显式无范围授权。
在请求体中,提供令牌 ID 和 unscoped 授权范围。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/auth_tokens
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
nocatalog(可选) |
查询 |
字符串 |
(从 v3.1 开始)nocatalog 仅适用于有范围的令牌。对于无范围的令牌,身份验证响应始终不包括服务目录。 |
方法 |
body |
数组 |
身份验证方法。对于令牌身份验证,请指定 |
auth |
body |
对象 |
一个 |
令牌 |
body |
对象 |
一个 |
audit_ids |
body |
数组 |
一个或两个审计 ID 的列表。审计 ID 是一个唯一的、随机生成的、URL 安全的字符串,可用于跟踪令牌。第一个审计 ID 是令牌的当前审计 ID。第二个审计 ID 仅存在于重新作用域的令牌中,并且是令牌重新作用域之前的审计 ID。重新作用域的令牌是指与相同或不同作用域交换的令牌。您可以使用这些审计 ID 来跟踪令牌或多个请求和端点上的令牌链的使用情况,而无需向非特权用户公开令牌 ID。 |
scope (可选) |
body |
字符串 |
授权范围(从 v3.4 开始)。指定 |
id |
body |
字符串 |
一个令牌 ID。 |
identity |
body |
对象 |
一个 |
示例¶
{
"auth": {
"identity": {
"methods": [
"token"
],
"token": {
"id": "'$OS_TOKEN'"
}
},
"scope": "unscoped"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Subject-Token |
标头 |
字符串 |
身份验证令牌。身份验证响应在响应头中而不是响应体中返回令牌 ID。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"token": {
"methods": [
"token"
],
"expires_at": "2015-11-05T22:00:11.000000Z",
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "10a2e6e717a245d9acad3e5f97aeca3d",
"name": "admin",
"password_expires_at": null
},
"audit_ids": [
"mAjXQhiYRyKwkB4qygdLVg"
],
"issued_at": "2015-11-05T21:00:33.819948Z"
}
}
验证身份并生成令牌。使用密码身份验证方法,然后使用 totp 方法,并在两者之间使用身份验证收据。
假设已为用户启用 MFA,并且已定义需要使用密码和 totp 进行身份验证的规则。
第一个请求体必须至少包含一个有效负载,指定 password 或 totp 身份验证方法,其中包括凭据以及可选的范围。如果仅提供一种方法,则将返回身份验证收据。范围不会保留在收据中,必须在后续请求中重新提供。
虽然有可能一次提供所有必需的身份验证方法,但此示例显示了更常见的多步骤过程。
可以使用超过 2 个因素,但处理过程相同;可以一次性提供所有身份验证方法,也可以分步骤提供,并在步骤之间使用一个或多个身份验证凭证。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/auth_tokens
首次请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
nocatalog(可选) |
查询 |
字符串 |
(从 v3.1 开始)身份验证响应不包括服务目录。默认情况下,响应包括服务目录。 |
name (可选) |
body |
字符串 |
用户名。如果您未指定用户的 ID,则需要。如果您指定用户名,还必须指定域(通过 ID 或名称)。 |
auth |
body |
对象 |
一个 |
user |
body |
对象 |
一个 |
scope (可选) |
body |
字符串 |
授权范围,包括系统(从 v3.10 开始)、项目或域(从 v3.4 开始)。如果在同一个请求中指定了多个范围(例如, |
password |
body |
对象 |
包含身份验证信息的 |
id (可选) |
body |
字符串 |
用户的 ID。如果您未指定用户名,则需要。 |
identity |
body |
对象 |
一个 |
方法 |
body |
数组 |
身份验证方法。对于密码身份验证,请指定 |
示例¶
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"password": "devstacker"
}
}
},
"scope": {
"project": {
"id": "a6944d763bf64ee6a275f1263fae0352"
}
}
}
}
响应¶
我们期望收到 401 状态码,以及一个返回的身份验证凭证。
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Openstack-Auth-Receipt |
标头 |
字符串 |
身份验证凭证。部分成功的身份验证响应会在此标头中,而不是在响应主体中返回身份验证凭证 ID。 |
方法 |
body |
数组 |
身份验证方法,通常是 |
expires_at |
body |
字符串 |
凭证的过期日期和时间。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, 一个 |
issued_at |
body |
字符串 |
颁发凭证的日期和时间。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, |
user |
body |
对象 |
一个 |
required_auth_methods |
body |
列表的列表 |
一个身份验证规则列表,可与身份验证凭证一起用于完成身份验证过程。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户已成功提供了一些身份验证方法,但不足以进行完全身份验证。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
身份验证尝试失败。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
身份验证凭证示例¶
{
"receipt":{
"expires_at":"2018-07-05T08:39:23.000000Z",
"issued_at":"2018-07-05T08:34:23.000000Z",
"methods": [
"password"
],
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"name": "admin"
}
},
"required_auth_methods": [
["totp", "password"]
]
}
第二次请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Openstack-Auth-Receipt |
标头 |
字符串 |
身份验证凭证。部分成功的身份验证响应会在此标头中,而不是在响应主体中返回身份验证凭证 ID。 |
nocatalog(可选) |
查询 |
字符串 |
(从 v3.1 开始)身份验证响应不包括服务目录。默认情况下,响应包括服务目录。 |
name (可选) |
body |
字符串 |
用户名。如果您未指定用户的 ID,则需要。如果您指定用户名,还必须指定域(通过 ID 或名称)。 |
auth |
body |
对象 |
一个 |
user |
body |
对象 |
一个 |
scope (可选) |
body |
字符串 |
授权范围,包括系统(从 v3.10 开始)、项目或域(从 v3.4 开始)。如果在同一个请求中指定了多个范围(例如, |
totp |
body |
对象 |
包含身份验证信息的 |
id (可选) |
body |
字符串 |
用户的 ID。如果您未指定用户名,则需要。 |
identity |
body |
对象 |
一个 |
方法 |
body |
数组 |
身份验证方法。对于 totp 身份验证,请指定 |
示例¶
{
"auth": {
"identity": {
"methods": [
"totp"
],
"totp": {
"user": {
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"passcode": "123456"
}
}
},
"scope": {
"project": {
"id": "a6944d763bf64ee6a275f1263fae0352"
}
}
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Subject-Token |
标头 |
字符串 |
身份验证令牌。身份验证响应在响应头中而不是响应体中返回令牌 ID。 |
region_id |
body |
字符串 |
(从 v3.2 开始)包含服务端点的区域的 ID。 |
方法 |
body |
数组 |
身份验证方法。对于密码身份验证,请指定 |
roles |
body |
数组 |
一个 |
url |
body |
字符串 |
端点 URL。 |
region |
body |
字符串 |
(在 v3.2 中已弃用)服务端点的地理位置。 |
令牌 |
body |
对象 |
一个 |
expires_at |
body |
字符串 |
令牌过期的时间和日期。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, 一个 |
system(可选) |
body |
对象 |
一个 |
domain(可选) |
body |
对象 |
一个 |
project(可选) |
body |
对象 |
一个 |
issued_at |
body |
字符串 |
令牌签发的时间和日期。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, |
catalog |
body |
数组 |
一个 |
user |
body |
对象 |
一个 |
audit_ids |
body |
数组 |
一个或两个审计 ID 的列表。审计 ID 是一个唯一的、随机生成的、URL 安全的字符串,可用于跟踪令牌。第一个审计 ID 是令牌的当前审计 ID。第二个审计 ID 仅存在于重新作用域的令牌中,并且是令牌重新作用域之前的审计 ID。重新作用域的令牌是指与相同或不同作用域交换的令牌。您可以使用这些审计 ID 来跟踪令牌或多个请求和端点上的令牌链的使用情况,而无需向非特权用户公开令牌 ID。 |
接口 |
body |
字符串 |
接口类型,描述端点的可见性。值为:- |
endpoints |
body |
数组 |
一个 |
type |
body |
字符串 |
端点类型。 |
id (可选) |
body |
字符串 |
用户的 ID。如果您未指定用户名,则需要。 |
name (可选) |
body |
字符串 |
用户名。如果您未指定用户的 ID,则需要。如果您指定用户名,还必须指定域(通过 ID 或名称)。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
身份验证尝试失败。身份验证凭证可能已过期,或者提供的其他身份验证方法无效。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
项目范围的密码和 TOTP 示例¶
{
"token": {
"audit_ids": [
"3T2dc1CGQxyJsHdDu1xkcw"
],
"catalog": [
{
"endpoints": [
{
"id": "068d1b359ee84b438266cb736d81de97",
"interface": "public",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "8bfc846841ab441ca38471be6d164ced",
"interface": "admin",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "beb6d358c3654b4bada04d4663b640b9",
"interface": "internal",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
}
],
"type": "identity",
"id": "050726f278654128aba89757ae25950c",
"name": "keystone"
}
],
"expires_at": "2015-11-07T02:58:43.578887Z",
"is_domain": false,
"issued_at": "2015-11-07T01:58:43.578929Z",
"methods": [
"password",
"totp"
],
"project": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "a6944d763bf64ee6a275f1263fae0352",
"name": "admin"
},
"roles": [
{
"id": "51cc68287d524c759f47c811e6463340",
"name": "admin"
}
],
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"name": "admin",
"password_expires_at": "2016-11-06T15:32:17.000000"
}
}
}
验证令牌并显示其信息,包括其过期日期和授权范围。
在 X-Auth-Token 请求标头中传递您自己的令牌。
在 X-Subject-Token 请求标头中传递您想要验证的令牌。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/auth_tokens
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Auth-Token |
标头 |
字符串 |
用于管理用户的有效身份验证令牌。 |
X-Subject-Token |
标头 |
字符串 |
身份验证令牌。身份验证响应在响应头中而不是响应体中返回令牌 ID。 |
nocatalog(可选) |
查询 |
字符串 |
(从 v3.1 开始)身份验证响应不包括服务目录。默认情况下,响应包括服务目录。 |
allow_expired (可选) |
查询 |
bool |
(自 v3.8 起) 允许获取已过期的令牌。默认情况下,过期的令牌会返回 404 异常。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Subject-Token |
标头 |
字符串 |
身份验证令牌。身份验证响应在响应头中而不是响应体中返回令牌 ID。 |
方法 |
body |
数组 |
身份验证方法,通常是 |
links |
body |
对象 |
指向 |
user |
body |
对象 |
一个 |
令牌 |
body |
对象 |
一个 |
expires_at |
body |
字符串 |
令牌过期的时间和日期。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, 一个 |
catalog (可选) |
body |
数组 |
一个 |
system(可选) |
body |
对象 |
一个 |
domain(可选) |
body |
对象 |
一个 |
project(可选) |
body |
对象 |
一个 |
roles |
body |
数组 |
一个 |
audit_ids |
body |
数组 |
一个或两个审计 ID 的列表。审计 ID 是一个唯一的、随机生成的、URL 安全的字符串,可用于跟踪令牌。第一个审计 ID 是令牌的当前审计 ID。第二个审计 ID 仅存在于重新作用域的令牌中,并且是令牌重新作用域之前的审计 ID。重新作用域的令牌是指与相同或不同作用域交换的令牌。您可以使用这些审计 ID 来跟踪令牌或多个请求和端点上的令牌链的使用情况,而无需向非特权用户公开令牌 ID。 |
issued_at |
body |
字符串 |
令牌签发的时间和日期。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, |
id (可选) |
body |
字符串 |
用户的 ID。如果您未指定用户名,则需要。 |
name (可选) |
body |
字符串 |
用户名。如果您未指定用户的 ID,则需要。如果您指定用户名,还必须指定域(通过 ID 或名称)。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
未范围示例¶
{
"token": {
"audit_ids": [
"mAjXQhiYRyKwkB4qygdLVg"
],
"expires_at": "2015-11-05T22:00:11.000000Z",
"issued_at": "2015-11-05T21:00:33.819948Z",
"methods": [
"password"
],
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "10a2e6e717a245d9acad3e5f97aeca3d",
"name": "admin",
"password_expires_at": null
}
}
}
系统范围示例¶
{
"token": {
"audit_ids": [
"3T2dc1CGQxyJsHdDu1xkcw"
],
"catalog": [
{
"endpoints": [
{
"id": "068d1b359ee84b438266cb736d81de97",
"interface": "public",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "8bfc846841ab441ca38471be6d164ced",
"interface": "admin",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "beb6d358c3654b4bada04d4663b640b9",
"interface": "internal",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
}
],
"type": "identity",
"id": "050726f278654128aba89757ae25950c",
"name": "keystone"
}
],
"expires_at": "2015-11-07T02:58:43.578887Z",
"issued_at": "2015-11-07T01:58:43.578929Z",
"methods": [
"password"
],
"roles": [
{
"id": "51cc68287d524c759f47c811e6463340",
"name": "admin"
}
],
"system": {
"all": true
},
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"name": "admin",
"password_expires_at": "2016-11-06T15:32:17.000000"
}
}
}
域范围示例¶
{
"token": {
"audit_ids": [
"3T2dc1CGQxyJsHdDu1xkcw"
],
"catalog": [
{
"endpoints": [
{
"id": "068d1b359ee84b438266cb736d81de97",
"interface": "public",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "8bfc846841ab441ca38471be6d164ced",
"interface": "admin",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "beb6d358c3654b4bada04d4663b640b9",
"interface": "internal",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
}
],
"type": "identity",
"id": "050726f278654128aba89757ae25950c",
"name": "keystone"
}
],
"domain": {
"id": "default",
"name": "Default"
},
"expires_at": "2015-11-07T02:58:43.578887Z",
"issued_at": "2015-11-07T01:58:43.578929Z",
"methods": [
"password"
],
"roles": [
{
"id": "51cc68287d524c759f47c811e6463340",
"name": "admin"
}
],
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"name": "admin",
"password_expires_at": "2016-11-06T15:32:17.000000"
}
}
}
项目范围示例¶
{
"token": {
"audit_ids": [
"3T2dc1CGQxyJsHdDu1xkcw"
],
"catalog": [
{
"endpoints": [
{
"id": "068d1b359ee84b438266cb736d81de97",
"interface": "public",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "8bfc846841ab441ca38471be6d164ced",
"interface": "admin",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
},
{
"id": "beb6d358c3654b4bada04d4663b640b9",
"interface": "internal",
"region": "RegionOne",
"region_id": "RegionOne",
"url": "http://example.com/identity"
}
],
"type": "identity",
"id": "050726f278654128aba89757ae25950c",
"name": "keystone"
}
],
"expires_at": "2015-11-07T02:58:43.578887Z",
"is_domain": false,
"issued_at": "2015-11-07T01:58:43.578929Z",
"methods": [
"password"
],
"project": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "a6944d763bf64ee6a275f1263fae0352",
"name": "admin"
},
"roles": [
{
"id": "51cc68287d524c759f47c811e6463340",
"name": "admin"
}
],
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "ee4dfb6e5540447cb3741905149d9b6e",
"name": "admin",
"password_expires_at": "2016-11-06T15:32:17.000000"
}
}
}
验证令牌。
此调用类似于 GET /auth/tokens,但即使在 X-Subject-Token 标头中,也不会提供响应主体。
身份验证 API 返回与 POST /auth/tokens 发出主题令牌时相同的响应,即使由于令牌无效而发生错误。HTTP 204 响应码表示 X-Subject-Token 有效。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/auth_tokens
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Auth-Token |
标头 |
字符串 |
用于管理用户的有效身份验证令牌。 |
X-Subject-Token |
标头 |
字符串 |
身份验证令牌。身份验证响应在响应头中而不是响应体中返回令牌 ID。 |
allow_expired (可选) |
查询 |
bool |
(自 v3.8 起) 允许获取已过期的令牌。默认情况下,过期的令牌会返回 404 异常。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
撤销令牌。
此调用类似于 HEAD /auth/tokens 调用,不同之处在于,无论 expires_at 属性值如何,X-Subject-Token 令牌会立即失效。不需要额外的 X-Auth-Token。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/auth_tokens
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Auth-Token |
标头 |
字符串 |
用于管理用户的有效身份验证令牌。 |
X-Subject-Token |
标头 |
字符串 |
身份验证令牌。身份验证响应在响应头中而不是响应体中返回令牌 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
新版本 3.3
此调用返回请求中提供的 X-Auth-Token 的服务目录,即使令牌本身不包含目录(例如,如果它是使用 ?nocatalog 生成的)。
目录对象的结构与令牌中包含的目录对象的结构相同。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/auth_catalog
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Auth-Token |
标头 |
字符串 |
用于管理用户的有效身份验证令牌。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
endpoints |
body |
数组 |
一个 |
id |
body |
字符串 |
服务所属的服务的 UUID。 |
type |
body |
字符串 |
服务类型,描述服务实现 API。值为 |
name |
body |
字符串 |
服务名称。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"catalog": [
{
"endpoints": [
{
"id": "39dc322ce86c4111b4f06c2eeae0841b",
"interface": "public",
"region": "RegionOne",
"url": "https://:5000"
},
{
"id": "ec642f27474842e78bf059f6c48f4e99",
"interface": "internal",
"region": "RegionOne",
"url": "https://:5000"
},
{
"id": "c609fc430175452290b62a4242e8a7e8",
"interface": "admin",
"region": "RegionOne",
"url": "https://:5000"
}
],
"id": "4363ae44bdf34a3981fde3b823cb9aa2",
"type": "identity",
"name": "keystone"
}
],
"links": {
"self": "https://example.com/identity/v3/catalog",
"previous": null,
"next": null
}
}
新版本 3.3
此调用返回根据请求中提供的 X-Auth-Token 可用于定范围的项目列表。
响应的结构与列出用户项目完全相同。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/auth_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Auth-Token |
标头 |
字符串 |
用于管理用户的有效身份验证令牌。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
body |
字符串 |
项目的域 ID。 |
enabled |
body |
布尔值 |
如果设置为 |
id |
body |
字符串 |
项目的 ID。 |
links |
body |
对象 |
指向 |
name |
body |
字符串 |
项目的名称。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"projects": [
{
"domain_id": "1789d1",
"enabled": true,
"id": "263fd9",
"links": {
"self": "https://example.com/identity/v3/projects/263fd9"
},
"name": "Test Group"
},
{
"domain_id": "1789d1",
"enabled": true,
"id": "50ef01",
"links": {
"self": "https://example.com/identity/v3/projects/50ef01"
},
"name": "Build Group"
}
],
"links": {
"self": "https://example.com/identity/v3/auth/projects",
"previous": null,
"next": null
}
}
新版本 3.3
此调用返回根据请求中提供的 X-Auth-Token 可用于定范围的域列表。
结构与列出域相同。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/auth_domains
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Auth-Token |
标头 |
字符串 |
用于管理用户的有效身份验证令牌。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
description |
body |
字符串 |
域的描述。 |
enabled |
body |
字符串 |
如果设置为 |
id |
body |
字符串 |
域的 ID。 |
links |
body |
对象 |
指向 |
name |
body |
字符串 |
域的名称。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"domains": [
{
"description": "my domain description",
"enabled": true,
"id": "1789d1",
"links": {
"self": "https://example.com/identity/v3/domains/1789d1"
},
"name": "my domain"
},
{
"description": "description of my other domain",
"enabled": true,
"id": "43e8da",
"links": {
"self": "https://example.com/identity/v3/domains/43e8da"
},
"name": "another domain"
}
],
"links": {
"self": "https://example.com/identity/v3/auth/domains",
"previous": null,
"next": null
}
}
新版本 3.10
此调用返回根据请求中提供的 X-Auth-Token 可用于定范围的系统列表。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/auth_system
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Auth-Token |
标头 |
字符串 |
用于管理用户的有效身份验证令牌。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
links |
body |
对象 |
指向 |
系统 |
body |
数组 |
基于角色分配要访问的系统列表。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
400 - 请求错误 |
请求中的某些内容无效。 |
示例¶
{
"system": [
{
"all": true
}
],
"links": {
"self": "https://example.com/identity/v3/auth/system"
}
}
应用程序凭证¶
应用程序凭证提供了一种将用户的授权委托给应用程序的方式,而无需共享用户的密码身份验证。这是一种有用的安全措施,尤其是在用户的身份验证由外部源(如 LDAP 或单点登录服务)提供的情况下。用户不是将用户密码存储在配置文件中,而是为特定项目创建一个应用程序凭证,并具有用户在该项目上拥有的所有或部分角色分配,然后在配置文件中存储应用程序凭证标识符和密钥。
可以同时激活多个应用程序凭证,因此可以通过创建一个第二个凭证、逐个将应用程序转换为使用它,然后删除第一个凭证来轻松轮换应用程序凭证。
应用程序凭证受创建它们的用户的生命周期限制。如果用户被删除、禁用或失去项目上的角色分配,则应用程序凭证将被删除。
应用程序凭证的权限可以通过两种方式限制。首先,所有者可以指定应用程序凭证在获取项目令牌时可以承担的自身角色的子集。例如,如果用户在项目上具有 member 角色,则他们还具有隐含的角色 reader,并且可以仅授予应用程序凭证项目上的 reader 角色
"roles": [
{"name": "reader"}
]
用户还可以通过使用访问规则来委托对其应用程序凭证的更细粒度的访问控制。例如,要创建一个仅限于在 nova 中创建服务器的应用程序凭证,用户可以添加以下访问规则
"access_rules": [
{
"path": "/v2.1/servers",
"method": "POST",
"service": "compute"
}
]
应用程序凭证访问规则的 "path" 属性使用通配符语法使其更灵活。例如,要创建一个仅限于列出服务器 IP 地址的应用程序凭证,可以使用以下两种访问规则
"access_rules": [
{
"path": "/v2.1/servers/*/ips",
"method": "GET",
"service": "compute"
}
]
或者等效地
"access_rules": [
{
"path": "/v2.1/servers/{server_id}/ips",
"method": "GET",
"service": "compute"
}
]
在两种情况下,包含任何服务器 ID 的请求路径都将匹配访问规则。为了获得更大的灵活性,递归通配符 ** 表示包含任意数量的 / 的请求路径将被匹配。例如
"access_rules": [
{
"path": "/v2.1/**",
"method": "GET",
"service": "compute"
}
]
将匹配 nova API 的版本 2.1。
为一种应用程序凭证创建的访问规则可以通过提供其 ID 给另一个应用程序凭证来重用,例如
"access_rules": [
{
"id": "abcdef"
}
]
要使用应用程序凭证进行身份验证,请将“application_credential”指定为身份验证方法。不允许请求范围,因为范围是从应用程序凭证检索的。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/auth_tokens
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
identity |
body |
对象 |
一个 |
方法 |
body |
数组 |
身份验证方法。要使用应用程序凭证进行身份验证,请指定 |
application_credential |
body |
对象 |
一个应用程序凭证对象。 |
id (可选) |
body |
字符串 |
用于身份验证的应用程序凭证的 ID。如果未提供,则必须通过其名称和所有用户来标识应用程序凭证。 |
name (可选) |
body |
字符串 |
用于身份验证的应用程序凭证的名称。如果提供,必须伴随一个用户对象。 |
secret |
body |
字符串 |
用于身份验证应用程序凭证的密钥。 |
user (可选) |
body |
对象 |
一个 |
示例¶
可以使用 ID 标识应用程序凭证
{
"auth": {
"identity": {
"methods": [
"application_credential"
],
"application_credential": {
"id": "423f19a4ac1e4f48bbb4180756e6eb6c",
"secret": "rEaqvJka48mpv"
}
}
}
}
它也可以通过名称和用户对象来标识
{
"auth": {
"identity": {
"methods": [
"application_credential"
],
"application_credential": {
"name": "monitoring",
"secret": "rEaqvJka48mpv",
"user": {
"id": "423f19a4ac1e4f48bbb4180756e6eb6c"
}
}
}
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Subject-Token |
标头 |
字符串 |
身份验证令牌。身份验证响应在响应头中而不是响应体中返回令牌 ID。 |
令牌 |
body |
对象 |
一个 |
application_credential |
body |
对象 |
应用程序凭证是否允许用于创建和删除其他应用程序凭证和信任。 |
application_credential.id |
body |
字符串 |
应用程序凭证的 ID。 |
application_credential.name |
body |
字符串 |
应用程序凭证的名称。 |
application_credential.restricted |
body |
布尔值 |
一个标志,指示应用程序凭据是否可用于创建或销毁其他应用程序凭据或信任关系。 |
audit_ids |
body |
数组 |
一个或两个审计 ID 的列表。审计 ID 是一个唯一的、随机生成的、URL 安全的字符串,可用于跟踪令牌。第一个审计 ID 是令牌的当前审计 ID。第二个审计 ID 仅存在于重新作用域的令牌中,并且是令牌重新作用域之前的审计 ID。重新作用域的令牌是指与相同或不同作用域交换的令牌。您可以使用这些审计 ID 来跟踪令牌或多个请求和端点上的令牌链的使用情况,而无需向非特权用户公开令牌 ID。 |
catalog |
body |
数组 |
一个 |
expires_at |
body |
字符串 |
令牌过期的时间和日期。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, 一个 |
issued_at |
body |
字符串 |
令牌签发的时间和日期。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss.sssZ
例如, |
方法 |
body |
数组 |
身份验证方法,通常是 |
project |
body |
对象 |
一个 |
roles |
body |
数组 |
一个 |
user |
body |
对象 |
一个 |
user.id (可选) |
body |
字符串 |
用户的 ID。如果您未指定用户名,则需要。 |
user.name (可选) |
body |
字符串 |
用户名。如果您未指定用户的 ID,则需要。如果您指定用户名,还必须指定域(通过 ID 或名称)。 |
示例¶
{
"token": {
"application_credential": {
"id": "423f19a4ac1e4f48bbb4180756e6eb6c",
"name": "monitoring",
"restricted": true
},
"audit_ids": [
"9JsolhssRzKfyayTIiCRUg"
],
"catalog": [
{
"endpoints": [
{
"region_id": "RegionOne",
"url": "http://example.com/identity",
"region": "RegionOne",
"interface": "admin",
"id": "81737f23cd8f45169fcd700cb658c8ad"
},
{
"region_id": "RegionOne",
"url": "http://example.com/identity",
"region": "RegionOne",
"interface": "public",
"id": "a7b9155184ed4607853304408e7e8d32"
}
],
"type": "identity",
"id": "408af8b8554248fc8d686bef54ae3bf6",
"name": "keystone"
}
],
"expires_at": "2018-01-15T22:14:05.000000Z",
"is_domain": false,
"issued_at": "2018-01-15T21:14:05.000000Z",
"methods": [
"application_credential"
],
"project": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "231c62fb0fbd485b995e8b060c3f0d98",
"name": "demo"
},
"roles": [
{
"id": "df8b7e3bf6fb49e9ba19122da2bae916",
"name": "Member"
}
],
"user": {
"password_expires_at": null,
"domain": {
"id": "default",
"name": "Default"
},
"id": "fd786d56402c4d1691372e7dee0d00b5",
"name": "demo"
}
}
}
使用应用程序凭据创建的令牌将具有应用程序凭据指定的作用域和角色。
为当前令牌的作用域项目中的用户创建应用程序凭据。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/application_credentials
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
拥有应用程序凭据的用户 ID。 |
application_credential |
body |
对象 |
一个应用程序凭证对象。 |
name |
body |
字符串 |
应用程序凭据的名称。必须是用户唯一的。 |
secret (可选) |
body |
字符串 |
将创建应用程序凭据的密钥。如果未提供,将生成一个密钥。 |
description (可选) |
body |
字符串 |
应用程序凭据用途的描述。 |
expires_at (可选) |
body |
字符串 |
应用程序凭据的可选到期时间。如果未设置,应用程序凭据将不会过期。 |
roles (可选) |
body |
数组 |
一个可选的角色对象列表,通过 ID 或名称标识。该列表只能包含用户在项目上分配的角色。如果未提供,应用程序凭据分配的角色将与当前令牌中的角色相同。 |
unrestricted (可选) |
body |
布尔值 |
一个可选标志,用于限制应用程序凭据是否可用于创建或销毁其他应用程序凭据或信任关系。默认为 false。 |
access_rules (可选) |
body |
列表 |
一个 |
示例¶
{
"application_credential": {
"name": "monitoring",
"secret": "rEaqvJka48mpv",
"description": "Application credential for monitoring.",
"expires_at": "2018-02-27T18:30:59Z",
"roles": [
{"name": "Reader"}
],
"access_rules": [
{
"path": "/v2.0/metrics",
"method": "GET",
"service": "monitoring"
}
],
"unrestricted": false
}
}
响应¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
application_credential |
body |
对象 |
应用程序凭据对象。 |
id |
body |
字符串 |
应用程序凭证的 ID。 |
name |
body |
字符串 |
应用程序凭证的名称。 |
secret |
body |
字符串 |
应用程序凭据的密钥,由服务器生成或由用户提供。此密钥仅在创建请求的响应中显示一次。它不会被存储或再次显示。如果密钥丢失,必须创建新的应用程序凭据。 |
description |
body |
字符串 |
应用程序凭据用途的描述。 |
expires_at |
body |
字符串 |
应用程序凭据的到期时间(如果已指定)。 |
project_id |
body |
字符串 |
创建应用程序凭据的项目 ID,以及使用此应用程序凭据进行身份验证的请求的作用域。 |
roles |
body |
数组 |
与项目关联的一个或多个角色的列表。使用此应用程序凭据的令牌将具有相同的角色。 |
access_rules |
body |
列表 |
一个 |
unrestricted |
body |
布尔值 |
一个标志,指示应用程序凭据是否可用于创建或销毁其他应用程序凭据或信任关系。 |
links |
body |
对象 |
指向相关资源的链接。 |
示例¶
{
"application_credential": {
"description": "Application credential for monitoring.",
"roles": [
{
"id": "6aff702516544aeca22817fd3bc39683",
"domain_id": null,
"name": "Reader"
}
],
"access_rules": [
{
"path": "/v2.0/metrics",
"id": "07d719df00f349ef8de77d542edf010c",
"service": "monitoring",
"method": "GET"
}
],
"links": {
"self": "http://example.com/identity/v3/users/fd786d56402c4d1691372e7dee0d00b5/application_credentials/58d61ff8e6e34accb35874016d1dba8b"
},
"expires_at": "2018-02-27T18:30:59.000000",
"unrestricted": false,
"secret": "rEaqvJka48mpv",
"project_id": "231c62fb0fbd485b995e8b060c3f0d98",
"id": "58d61ff8e6e34accb35874016d1dba8b",
"name": "monitoring"
}
}
列出用户的全部应用程序凭据。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/application_credentials
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
拥有应用程序凭据的用户 ID。 |
name (可选) |
查询 |
字符串 |
应用程序凭据的名称。必须是用户唯一的。 |
响应¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
application_credential |
body |
对象 |
应用程序凭据对象。 |
id |
body |
字符串 |
应用程序凭证的 ID。 |
name |
body |
字符串 |
应用程序凭证的名称。 |
description |
body |
字符串 |
应用程序凭据用途的描述。 |
expires_at |
body |
字符串 |
应用程序凭据的到期时间(如果已指定)。 |
project_id |
body |
字符串 |
创建应用程序凭据的项目 ID,以及使用此应用程序凭据进行身份验证的请求的作用域。 |
roles |
body |
数组 |
与项目关联的一个或多个角色的列表。使用此应用程序凭据的令牌将具有相同的角色。 |
access_rules |
body |
列表 |
一个 |
unrestricted |
body |
布尔值 |
一个标志,指示应用程序凭据是否可用于创建或销毁其他应用程序凭据或信任关系。 |
links |
body |
对象 |
指向资源集合的链接。 |
示例¶
{
"links": {
"self": "http://example.com/identity/v3/users/fd786d56402c4d1691372e7dee0d00b5/application_credentials",
"previous": null,
"next": null
},
"application_credentials": [
{
"description": "Application credential for backups.",
"roles": [
{
"domain_id": null,
"name": "Writer",
"id": "6aff702516544aeca22817fd3bc39683"
}
],
"access_rules": [
],
"links": {
"self": "http://example.com/identity/v3/users/fd786d56402c4d1691372e7dee0d00b5/application_credentials/308a7e905eee4071aac5971744c061f6"
},
"expires_at": "2018-02-27T18:30:59.000000",
"unrestricted": false,
"project_id": "231c62fb0fbd485b995e8b060c3f0d98",
"id": "308a7e905eee4071aac5971744c061f6",
"name": "backups"
},
{
"description": "Application credential for monitoring.",
"roles": [
{
"id": "6aff702516544aeca22817fd3bc39683",
"domain_id": null,
"name": "Reader"
}
],
"access_rules": [
{
"path": "/v2.0/metrics",
"id": "07d719df00f349ef8de77d542edf010c",
"service": "monitoring",
"method": "GET"
}
],
"links": {
"self": "http://example.com/identity/v3/users/fd786d56402c4d1691372e7dee0d00b5/application_credentials/58d61ff8e6e34accb35874016d1dba8b"
},
"expires_at": "2018-02-27T18:30:59.000000",
"unrestricted": false,
"project_id": "231c62fb0fbd485b995e8b060c3f0d98",
"id": "58d61ff8e6e34accb35874016d1dba8b",
"name": "monitoring"
}
]
}
显示应用程序凭据的详细信息。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/application_credentials
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
拥有应用程序凭据的用户 ID。 |
application_credential_id |
路径 |
字符串 |
应用程序凭证的 ID。 |
响应¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
application_credential |
body |
对象 |
应用程序凭据对象。 |
id |
body |
字符串 |
应用程序凭证的 ID。 |
name |
body |
字符串 |
应用程序凭证的名称。 |
description |
body |
字符串 |
应用程序凭据用途的描述。 |
expires_at |
body |
字符串 |
应用程序凭据的到期时间(如果已指定)。 |
project_id |
body |
字符串 |
创建应用程序凭据的项目 ID,以及使用此应用程序凭据进行身份验证的请求的作用域。 |
roles |
body |
数组 |
与项目关联的一个或多个角色的列表。使用此应用程序凭据的令牌将具有相同的角色。 |
access_rules |
body |
列表 |
一个 |
unrestricted |
body |
布尔值 |
一个标志,指示应用程序凭据是否可用于创建或销毁其他应用程序凭据或信任关系。 |
links |
body |
对象 |
指向相关资源的链接。 |
示例¶
{
"application_credential": {
"description": "Application credential for monitoring.",
"roles": [
{
"id": "6aff702516544aeca22817fd3bc39683",
"domain_id": null,
"name": "Reader"
}
],
"access_rules": [
{
"path": "/v2.0/metrics",
"id": "07d719df00f349ef8de77d542edf010c",
"service": "monitoring",
"method": "GET"
}
],
"links": {
"self": "http://example.com/identity/v3/users/fd786d56402c4d1691372e7dee0d00b5/application_credentials/58d61ff8e6e34accb35874016d1dba8b"
},
"expires_at": "2018-02-27T18:30:59.000000",
"unrestricted": false,
"project_id": "231c62fb0fbd485b995e8b060c3f0d98",
"id": "58d61ff8e6e34accb35874016d1dba8b",
"name": "monitoring"
}
}
删除应用程序凭据。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/application_credentials
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
拥有应用程序凭据的用户 ID。 |
application_credential_id |
路径 |
字符串 |
应用程序凭证的 ID。 |
响应¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
列出用户的全部访问规则。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/access_rules
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
拥有访问规则的用户 ID。 |
响应¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
access_rules |
body |
列表 |
一个 |
id |
body |
字符串 |
访问规则的 ID |
路径 |
body |
字符串 |
应用程序凭据允许访问的 API 路径。可以使用命名通配符(如 |
method |
body |
字符串 |
应用程序凭据允许用于给定 API 端点的请求方法。 |
服务 |
body |
字符串 |
应用程序凭据允许访问的服务类型标识符。必须是服务目录中列出的服务类型,而不是服务的代码名称。 |
links |
body |
对象 |
指向资源集合的链接。 |
示例¶
{
"links": {
"self": "https://example.com/identity/v3/users/3e0716aefcad4b129a0f19f95ec9489e/access_rules",
"previous": null,
"next": null
},
"access_rules": [
{
"path": "/v2.0/metrics",
"links": {
"self": "https://example.com/identity/v3/access_rules/07d719df00f349ef8de77d542edf010c"
},
"id": "07d719df00f349ef8de77d542edf010c",
"service": "monitoring",
"method": "GET"
}
]
}
显示访问规则的详细信息。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/access_rules
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
拥有访问规则的用户 ID。 |
access_rule_id |
路径 |
字符串 |
访问规则的 ID。 |
响应¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
access_rules |
body |
列表 |
一个 |
id |
body |
字符串 |
访问规则的 ID |
路径 |
body |
字符串 |
应用程序凭据允许访问的 API 路径。可以使用命名通配符(如 |
method |
body |
字符串 |
应用程序凭据允许用于给定 API 端点的请求方法。 |
服务 |
body |
字符串 |
应用程序凭据允许访问的服务类型标识符。必须是服务目录中列出的服务类型,而不是服务的代码名称。 |
links |
body |
对象 |
指向资源集合的链接。 |
示例¶
{
"access_rule": {
"path": "/v2.0/metrics",
"links": {
"self": "https://example.com/identity/v3/access_rules/07d719df00f349ef8de77d542edf010c"
},
"id": "07d719df00f349ef8de77d542edf010c",
"service": "monitoring",
"method": "GET"
}
}
删除访问规则。仍被应用程序凭据使用的访问规则无法删除。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/access_rules
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
拥有访问规则的用户 ID。 |
access_rule_id |
路径 |
字符串 |
访问规则的 ID。 |
响应¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
凭据¶
作为用户提交的身份验证凭据的交换,身份服务生成并返回一个令牌。令牌代表用户的经过身份验证的身份,并可选地授予对特定项目或域的授权。
您可以列出所有凭据,以及创建、显示凭据详细信息、更新和删除凭据。
创建凭据。
以下示例演示如何创建 EC2 样式的凭据。凭据 blob 是一个字符串,其中包含一个 JSON 序列化的字典,其中包含 access 和 secret 键。当您指定 ec2 类型时,需要此格式。要指定其他凭据,例如 access_key,请更改类型和数据 blob 的内容。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/credentials
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
credential |
body |
对象 |
一个 |
project_id |
body |
字符串 |
项目的 ID。 |
type |
body |
字符串 |
凭据类型,例如 |
blob |
body |
字符串 |
凭据本身,作为序列化的 blob。 |
user_id |
body |
字符串 |
拥有凭据的用户 ID。 |
示例¶
{
"credential": {
"blob": "{\"access\":\"181920\",\"secret\":\"secretKey\"}",
"project_id": "731fc6f265cd486d900f16e84c5cb594",
"type": "ec2",
"user_id": "bb5476fd12884539b41d5a88f838d773"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
credential |
body |
对象 |
一个 |
user_id |
body |
字符串 |
拥有凭据的用户 ID。 |
links |
body |
对象 |
用于 |
blob |
body |
字符串 |
凭据本身,作为序列化的 blob。 |
project_id |
body |
字符串 |
项目的 ID。 |
type |
body |
字符串 |
凭据类型,例如 |
id |
body |
字符串 |
凭据的 UUID。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"credential": {
"user_id": "bb5476fd12884539b41d5a88f838d773",
"links": {
"self": "http://example.com/identity/v3/credentials/3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510"
},
"blob": "{\"access\":\"181920\",\"secret\":\"secretKey\"}",
"project_id": "731fc6f265cd486d900f16e84c5cb594",
"type": "ec2",
"id": "3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510"
}
}
列出所有凭据。
可选地,您可以将 user_id 或 type 查询参数包含在 URI 中,以根据用户或凭据类型过滤响应。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/credentials
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id (可选) |
查询 |
字符串 |
按用户 ID 过滤响应。 |
type (可选) |
body |
字符串 |
凭据类型,例如 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
body |
字符串 |
拥有凭据的用户 ID。 |
links |
body |
对象 |
用于 |
blob |
body |
字符串 |
凭据本身,作为序列化的 blob。 |
credentials |
body |
数组 |
一个 |
project_id |
body |
字符串 |
项目的 ID。 |
type |
body |
字符串 |
凭据类型,例如 |
id |
body |
字符串 |
凭据的 UUID。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"credentials": [
{
"user_id": "bb5476fd12884539b41d5a88f838d773",
"links": {
"self": "http://example.com/identity/v3/credentials/207e9b76935efc03804d3dd6ab52d22e9b22a0711e4ada4ff8b76165a07311d7"
},
"blob": "{\"access\": \"a42a27755ce6442596b049bd7dd8a563\", \"secret\": \"71faf1d40bb24c82b479b1c6fbbd9f0c\", \"trust_id\": null}",
"project_id": "6e01855f345f4c59812999b5e459137d",
"type": "ec2",
"id": "207e9b76935efc03804d3dd6ab52d22e9b22a0711e4ada4ff8b76165a07311d7"
},
{
"user_id": "6f556708d04b4ea6bc72d7df2296b71a",
"links": {
"self": "http://example.com/identity/v3/credentials/2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609"
},
"blob": "{\"access\": \"7da79ff0aa364e1396f067e352b9b79a\", \"secret\": \"7a18d68ba8834b799d396f3ff6f1e98c\", \"trust_id\": null}",
"project_id": "1a1d14690f3c4ec5bf5f321c5fde3c16",
"type": "ec2",
"id": "2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609"
},
{
"user_id": "c14107e65d5c4a7f8894fc4b3fc209ff",
"links": {
"self": "http://example.com/identity/v3/credentials/3397b204b5f04c495bcdc8f34c8a39996f280f9172658241873e15f070ec79d7"
},
"blob": "{\"access\": \"db9c58a558534a10a070110de4f9f20c\", \"secret\": \"973e790b88db447ba6f93bca02bc745b\", \"trust_id\": null}",
"project_id": "7396e43183db40dcbf40dd727637b548",
"type": "ec2",
"id": "3397b204b5f04c495bcdc8f34c8a39996f280f9172658241873e15f070ec79d7"
},
{
"user_id": "915cc5f8cca6466aba6c6be06cbabfdf",
"links": {
"self": "http://example.com/identity/v3/credentials/352d5dd7a4aa19c4f2f23ee288bf65dc23a0bc293f40ffd2128ffe6a8cf3e871"
},
"blob": "{\"access\": \"817c6c3487a440c1a0b1d3f92b30ca37\", \"secret\": \"47d681117d1c46e69a0c9ec811dae2e9\", \"trust_id\": null}",
"project_id": "2bf9767f9db949ee8364262a28a23062",
"type": "ec2",
"id": "352d5dd7a4aa19c4f2f23ee288bf65dc23a0bc293f40ffd2128ffe6a8cf3e871"
},
{
"user_id": "bb5476fd12884539b41d5a88f838d773",
"links": {
"self": "http://example.com/identity/v3/credentials/3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510"
},
"blob": "{\"access\":\"181920\",\"secret\":\"secretKey\"}",
"project_id": "731fc6f265cd486d900f16e84c5cb594",
"type": "ec2",
"id": "3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510"
},
{
"user_id": "bb5476fd12884539b41d5a88f838d773",
"links": {
"self": "http://example.com/identity/v3/credentials/6b7d803fc03b85866904b6b79e0a8fa1f4013b584163b4477eed96717eb402c0"
},
"blob": "{\"access\": \"f2ba45670b504a518b46e920d760fde2\", \"secret\": \"bf7fff2b3a844730b2db793411756e55\", \"trust_id\": null}",
"project_id": "731fc6f265cd486d900f16e84c5cb594",
"type": "ec2",
"id": "6b7d803fc03b85866904b6b79e0a8fa1f4013b584163b4477eed96717eb402c0"
},
{
"user_id": "2b657f6742ac416697e6821b3b2ee785",
"links": {
"self": "http://example.com/identity/v3/credentials/7d391b869631e5c4836708ea3bb3e0a5cbe0481201b5f0ddd5685ad3b3faa564"
},
"blob": "{\"access\": \"a1525da4e7c0438ebf3058372d637b59\", \"secret\": \"c9165d2542b141e8b2a1ff61a5f5487c\", \"trust_id\": null}",
"project_id": "2bf9767f9db949ee8364262a28a23062",
"type": "ec2",
"id": "7d391b869631e5c4836708ea3bb3e0a5cbe0481201b5f0ddd5685ad3b3faa564"
},
{
"user_id": "bb5476fd12884539b41d5a88f838d773",
"links": {
"self": "http://example.com/identity/v3/credentials/7ef4faa904ae7b8b4ddc7bad15b05ee359dad7d7a9b82861d4ad92fdbbb2eb4e"
},
"blob": "{\"access\": \"7d7559359b57419eb5f5f5dcd65ab57d\", \"secret\": \"570652bcf8c2483c86eb29e9734eed3c\", \"trust_id\": null}",
"project_id": "731fc6f265cd486d900f16e84c5cb594",
"type": "ec2",
"id": "7ef4faa904ae7b8b4ddc7bad15b05ee359dad7d7a9b82861d4ad92fdbbb2eb4e"
},
{
"user_id": "aedb193e9bb8400485f8d8426f7a031f",
"links": {
"self": "http://example.com/identity/v3/credentials/9c1c428d8e0e8338a5e16489ecfff9962f2b00f984ce4c7e9015e4003f478df8"
},
"blob": "{\"access\": \"b3a6e5f4427c47e9b202264d91a19e49\", \"secret\": \"d9eb470f503f4b46932de38db7a79402\", \"trust_id\": null}",
"project_id": "a2672ecf9dd34c6980448b25a47e0947",
"type": "ec2",
"id": "9c1c428d8e0e8338a5e16489ecfff9962f2b00f984ce4c7e9015e4003f478df8"
},
{
"user_id": "c14107e65d5c4a7f8894fc4b3fc209ff",
"links": {
"self": "http://example.com/identity/v3/credentials/e2c35ac2becb0fca3c3c2f035692a4f46a9cbf3b6e86c8a47f5aafe837d78a05"
},
"blob": "{\"access\": \"1ed843b1bd4a409f9562400085adbaa4\", \"secret\": \"236ab24db1f04ec995fcf618ed4fc0f5\", \"trust_id\": null}",
"project_id": "6e01855f345f4c59812999b5e459137d",
"type": "ec2",
"id": "e2c35ac2becb0fca3c3c2f035692a4f46a9cbf3b6e86c8a47f5aafe837d78a05"
}
],
"links": {
"self": "http://example.com/identity/v3/credentials",
"previous": null,
"next": null
}
}
显示凭据的详细信息。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/credential
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
credential_id |
路径 |
字符串 |
凭据的 UUID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
credential |
body |
对象 |
一个 |
user_id |
body |
字符串 |
拥有凭据的用户 ID。 |
links |
body |
对象 |
用于 |
blob |
body |
字符串 |
凭据本身,作为序列化的 blob。 |
project_id |
body |
字符串 |
项目的 ID。 |
type |
body |
字符串 |
凭据类型,例如 |
id |
body |
字符串 |
凭据的 UUID。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"credential": {
"user_id": "bb5476fd12884539b41d5a88f838d773",
"links": {
"self": "http://example.com/identity/v3/credentials/207e9b76935efc03804d3dd6ab52d22e9b22a0711e4ada4ff8b76165a07311d7"
},
"blob": "{\"access\": \"a42a27755ce6442596b049bd7dd8a563\", \"secret\": \"71faf1d40bb24c82b479b1c6fbbd9f0c\", \"trust_id\": null}",
"project_id": "6e01855f345f4c59812999b5e459137d",
"type": "ec2",
"id": "207e9b76935efc03804d3dd6ab52d22e9b22a0711e4ada4ff8b76165a07311d7"
}
}
更新凭据。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/credential
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
credential_id |
路径 |
字符串 |
凭据的 UUID。 |
credential |
body |
对象 |
一个 |
project_id |
body |
字符串 |
项目的 ID。 |
type (可选) |
body |
字符串 |
凭据类型,例如 |
blob (可选) |
body |
字符串 |
凭据本身,作为序列化的 blob。 |
user_id (可选) |
body |
字符串 |
拥有凭据的用户 ID。 |
示例¶
{
"credential": {
"blob": "{\"access\":\"181920\",\"secret\":\"secretKey\"}",
"project_id": "731fc6f265cd486d900f16e84c5cb594",
"type": "ec2",
"user_id": "bb5476fd12884539b41d5a88f838d773"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
credential |
body |
对象 |
一个 |
user_id |
body |
字符串 |
拥有凭据的用户 ID。 |
links |
body |
对象 |
用于 |
blob |
body |
字符串 |
凭据本身,作为序列化的 blob。 |
project_id |
body |
字符串 |
项目的 ID。 |
type |
body |
字符串 |
凭据类型,例如 |
id |
body |
字符串 |
凭据的 UUID。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"credential": {
"user_id": "bb5476fd12884539b41d5a88f838d773",
"links": {
"self": "http://example.com/identity/v3/credentials/207e9b76935efc03804d3dd6ab52d22e9b22a0711e4ada4ff8b76165a07311d7"
},
"blob": "{\"access\":\"181920\",\"secret\":\"secretKey\"}",
"project_id": "731fc6f265cd486d900f16e84c5cb594",
"type": "ec2",
"id": "207e9b76935efc03804d3dd6ab52d22e9b22a0711e4ada4ff8b76165a07311d7"
}
}
删除凭据。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/credential
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
credential_id |
路径 |
字符串 |
凭据的 UUID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
领域¶
域是用户、组和项目的集合。每个组和项目都由恰好一个域拥有。
每个域定义一个命名空间,其中存在某些 API 可见的名称属性,这会影响这些名称必须全局唯一还是在域内唯一。在 Identity API 中,这些属性的唯一性如下
域名称。在所有域中全局唯一。
角色名称。在其拥有域内唯一。
用户名。在其拥有域内唯一。
项目名称。在其拥有域内唯一。
组名称。在其拥有域内唯一。
列出所有域。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domains
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
name (可选) |
查询 |
字符串 |
按域名称过滤响应。 |
enabled(可选) |
查询 |
字符串 |
如果设置为 |
limit (可选) |
查询 |
整数 |
请求项目大小。返回最多限制值数量的项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。 |
marker (可选) |
查询 |
字符串 |
最后一个项目看到的 ID。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domains |
body |
数组 |
一个 |
description |
body |
字符串 |
域的描述。 |
enabled |
body |
字符串 |
如果设置为 |
id |
body |
字符串 |
域的 ID。 |
links |
body |
对象 |
指向 |
name |
body |
字符串 |
域的名称。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"domains": [
{
"description": "Used for swift functional testing",
"enabled": true,
"id": "5a75994a383c449184053ff7270c4e91",
"links": {
"self": "http://example.com/identity/v3/domains/5a75994a383c449184053ff7270c4e91"
},
"name": "swift_test"
},
{
"description": "Owns users and tenants (i.e. projects) available on Identity API v2.",
"enabled": true,
"id": "default",
"links": {
"self": "http://example.com/identity/v3/domains/default"
},
"name": "Default"
}
],
"links": {
"next": null,
"previous": null,
"self": "http://example.com/identity/v3/domains"
}
}
创建域。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domains
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain |
body |
对象 |
一个 |
explicit_domain_id (可选) |
body |
字符串 |
域 ID。以这种方式创建的域将不使用自动生成的 ID,而是使用传入的 ID。传入的标识符必须符合现有的 ID 生成方案:没有破折号的 UUID4。 |
enabled(可选) |
body |
字符串 |
如果设置为 用户只能对启用的域(及其任何项目)进行授权。此外,如果拥有它们的域也已启用,用户才能进行身份验证。禁用域会阻止这两件事。 |
description (可选) |
body |
字符串 |
域的描述。 |
name |
body |
字符串 |
域的名称。 |
options (可选) |
body |
对象 |
域的资源选项。可用的资源选项是 |
示例¶
{
"domain": {
"description": "Domain description",
"enabled": true,
"name": "myDomain"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain |
body |
对象 |
一个 |
description |
body |
字符串 |
域的描述。 |
enabled |
body |
字符串 |
如果设置为 |
id |
body |
字符串 |
域的 ID。 |
links |
body |
对象 |
指向 |
name |
body |
字符串 |
域的名称。 |
选项 |
body |
对象 |
角色的资源选项。可用的资源选项是 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
显示域的详情。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domains
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain |
body |
对象 |
一个 |
description |
body |
字符串 |
域的描述。 |
enabled |
body |
字符串 |
如果设置为 |
id |
body |
字符串 |
域的 ID。 |
links |
body |
对象 |
指向 |
name |
body |
字符串 |
域的名称。 |
选项 |
body |
对象 |
角色的资源选项。可用的资源选项是 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"domain": {
"description": "Owns users and tenants (i.e. projects) available on Identity API v2.",
"enabled": true,
"id": "default",
"links": {
"self": "http://example.com/identity/v3/domains/default"
},
"name": "Default",
"options": {}
}
}
更新一个域。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
domain |
body |
对象 |
一个 |
enabled(可选) |
body |
字符串 |
如果设置为 用户只能针对启用的域(及其所有项目)进行授权。此外,如果拥有用户的域也已启用,用户才能进行身份验证。禁用域会阻止这两项操作。禁用域后,针对该域授权的所有令牌都将失效。但是,如果重新启用该域,只要这些令牌没有过期,它们将再次有效。 |
description (可选) |
body |
字符串 |
域的新描述。 |
name (可选) |
body |
字符串 |
域的新名称。 |
options (可选) |
body |
对象 |
域的资源选项。可用的资源选项是 |
示例¶
{
"domain": {
"description": "Owns users and projects on Identity API v2."
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain |
body |
对象 |
一个 |
description |
body |
字符串 |
域的描述。 |
enabled |
body |
字符串 |
如果设置为 |
id |
body |
字符串 |
域的 ID。 |
links |
body |
对象 |
指向 |
name |
body |
字符串 |
域的名称。 |
选项 |
body |
对象 |
角色的资源选项。可用的资源选项是 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"domain": {
"links": {
"self": "http://example.com/identity/v3/domains/default"
},
"enabled": true,
"description": "Owns users and projects on Identity API v2.",
"name": "Default",
"id": "default",
"options": {}
}
}
删除一个域。为了尽量减少意外删除域的风险,必须首先使用更新域方法禁用该域。
删除域时,此调用还会删除其拥有的所有实体,例如用户、组和项目,以及与这些实体相关的任何凭证和已授予的角色。
如果尝试删除启用的域,此调用将返回 Forbidden (403) 响应代码。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
域配置¶
您可以管理特定于域的配置选项。
特定于域的配置选项在它们的组对象中构建。API仅支持 identity 和 ldap 组。这些组会覆盖 Identity 服务器存储用户和组的默认配置设置。
您可以使用 HTTP PUT、PATCH 和 DELETE 方法创建、更新和删除特定于域的配置选项。更新时,只需包含正在更新的选项即可。
要创建选项,请使用 PUT 方法。Identity API 不会返回被认为敏感的选项,尽管您可以创建和更新这些选项。当前被认为敏感的唯一选项是 ldap 组中的 password 选项。
API 允许您将敏感选项包含在非敏感选项中。例如,您可以将密码包含在 url 选项中。
如果尝试为 identity 或 ldap 组以外的组创建或更新配置选项,将返回 Forbidden (403) 响应代码。
有关如何将 Identity 服务与 LDAP 集成的信息,请参阅 将 Identity 与 LDAP 集成。
可以检索可以覆盖的选项的默认配置设置。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_config_default
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
config |
body |
对象 |
一个 |
ldap |
body |
对象 |
一个 |
url |
body |
字符串 |
LDAP URL。 |
user_tree_dn |
body |
字符串 |
LDAP 的基本可区分名称 (DN),从这里可以访问所有用户。例如, |
identity |
body |
对象 |
一个 |
driver |
body |
字符串 |
Identity 后端驱动程序。 |
示例¶
{
"config": {
"identity": {
"driver": "ldap"
},
"ldap": {
"url": "ldap://",
"user": "",
"suffix": "cn=example,cn=com",
....
}
}
}
读取特定组的默认配置设置。
API 仅支持 identity 和 ldap 组。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_config_default
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group |
路径 |
字符串 |
组 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
ldap |
body |
对象 |
一个 |
url |
body |
字符串 |
LDAP URL。 |
user_tree_dn |
body |
字符串 |
LDAP 的基本可区分名称 (DN),从这里可以访问所有用户。例如, |
identity |
body |
对象 |
一个 |
driver |
body |
字符串 |
Identity 后端驱动程序。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"ldap": {
"url": "ldap://",
"user": "",
"suffix": "cn=example,cn=com".
....
}
}
读取组中选项的默认配置设置。
API 仅支持 identity 和 ldap 组。对于 ldap 组,有效值为 url 或 user_tree_dn。对于 identity 组,有效值为 driver。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_config_default
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group |
路径 |
字符串 |
组 ID。 |
option |
路径 |
字符串 |
选项名称。对于 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
url |
body |
字符串 |
LDAP URL。 |
driver |
body |
字符串 |
Identity 后端驱动程序。 |
user_tree_dn |
body |
字符串 |
LDAP 的基本可区分名称 (DN),从这里可以访问所有用户。例如, |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"driver": "ldap"
}
显示域组选项配置的详情。
API 仅支持 identity 和 ldap 组。对于 ldap 组,有效值为 url 或 user_tree_dn。对于 identity 组,有效值为 driver。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_config_default
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
group |
路径 |
字符串 |
组 ID。 |
option |
路径 |
字符串 |
选项名称。对于 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
url |
body |
字符串 |
LDAP URL。 |
driver |
body |
字符串 |
Identity 后端驱动程序。 |
ldap |
body |
对象 |
一个 |
config |
body |
对象 |
一个 |
user_tree_dn |
body |
字符串 |
LDAP 的基本可区分名称 (DN),从这里可以访问所有用户。例如, |
identity |
body |
对象 |
一个 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"url": "http://myldap/root"
}
更新域组选项配置。
API 仅支持 identity 和 ldap 组。对于 ldap 组,有效值为 url 或 user_tree_dn。对于 identity 组,有效值为 driver。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_config_default
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
group |
路径 |
字符串 |
组 ID。 |
option |
路径 |
字符串 |
选项名称。对于 |
url |
body |
字符串 |
LDAP URL。 |
driver |
body |
字符串 |
Identity 后端驱动程序。 |
user_tree_dn |
body |
字符串 |
LDAP 的基本可区分名称 (DN),从这里可以访问所有用户。例如, |
示例¶
{
"url": "http://myldap/my_other_root"
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
url |
body |
字符串 |
LDAP URL。 |
driver |
body |
字符串 |
Identity 后端驱动程序。 |
ldap |
body |
对象 |
一个 |
config |
body |
对象 |
一个 |
user_tree_dn |
body |
字符串 |
LDAP 的基本可区分名称 (DN),从这里可以访问所有用户。例如, |
identity |
body |
对象 |
一个 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"config": {
"identity": {
"driver": "ldap"
},
"ldap": {
"url": "http://myldap/my_other_root",
"user_tree_dn": "ou=Users,dc=my_new_root,dc=org"
}
}
}
删除域组选项配置。
API 仅支持 identity 和 ldap 组。对于 ldap 组,有效值为 url 或 user_tree_dn。对于 identity 组,有效值为 driver。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_config_default
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
group |
路径 |
字符串 |
组 ID。 |
option |
路径 |
字符串 |
选项名称。对于 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
显示域组配置的详情。
API 仅支持 identity 和 ldap 组。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_config_default
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
group |
路径 |
字符串 |
组 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
url |
body |
字符串 |
LDAP URL。 |
driver |
body |
字符串 |
Identity 后端驱动程序。 |
ldap |
body |
对象 |
一个 |
config |
body |
对象 |
一个 |
user_tree_dn |
body |
字符串 |
LDAP 的基本可区分名称 (DN),从这里可以访问所有用户。例如, |
identity |
body |
对象 |
一个 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"ldap": {
"url": "http://myldap/root",
"user_tree_dn": "ou=Users,dc=root,dc=org"
}
}
更新域组配置。
API 仅支持 identity 和 ldap 组。如果尝试设置其他组的配置选项,此调用将以 Forbidden (403) 响应代码失败。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_config_default
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
group |
路径 |
字符串 |
组 ID。 |
url |
body |
字符串 |
LDAP URL。 |
driver |
body |
字符串 |
Identity 后端驱动程序。 |
ldap |
body |
对象 |
一个 |
config |
body |
对象 |
一个 |
user_tree_dn |
body |
字符串 |
LDAP 的基本可区分名称 (DN),从这里可以访问所有用户。例如, |
identity |
body |
对象 |
一个 |
示例¶
{
"config": {
"ldap": {
"url": "http://myldap/my_new_root",
"user_tree_dn": "ou=Users,dc=my_new_root,dc=org"
}
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
url |
body |
字符串 |
LDAP URL。 |
driver |
body |
字符串 |
Identity 后端驱动程序。 |
ldap |
body |
对象 |
一个 |
config |
body |
对象 |
一个 |
user_tree_dn |
body |
字符串 |
LDAP 的基本可区分名称 (DN),从这里可以访问所有用户。例如, |
identity |
body |
对象 |
一个 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"config": {
"identity": {
"driver": "ldap"
},
"ldap": {
"url": "http://myldap/my_new_root",
"user_tree_dn": "ou=Users,dc=my_new_root,dc=org"
}
}
}
删除域组配置。
API 仅支持 identity 和 ldap 组。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_config_default
请求参数¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
group |
路径 |
字符串 |
组 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
创建域配置。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_config
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
url |
body |
字符串 |
LDAP URL。 |
driver |
body |
字符串 |
Identity 后端驱动程序。 |
ldap |
body |
对象 |
一个 |
config |
body |
对象 |
一个 |
user_tree_dn |
body |
字符串 |
LDAP 的基本可区分名称 (DN),从这里可以访问所有用户。例如, |
identity |
body |
对象 |
一个 |
示例¶
{
"config": {
"identity": {
"driver": "ldap"
},
"ldap": {
"url": "ldap://myldap.com:389/",
"user_tree_dn": "ou=Users,dc=my_new_root,dc=org"
}
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
url |
body |
字符串 |
LDAP URL。 |
driver |
body |
字符串 |
Identity 后端驱动程序。 |
ldap |
body |
对象 |
一个 |
config |
body |
对象 |
一个 |
user_tree_dn |
body |
字符串 |
LDAP 的基本可区分名称 (DN),从这里可以访问所有用户。例如, |
identity |
body |
对象 |
一个 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"config": {
"identity": {
"driver": "ldap"
},
"ldap": {
"url": "ldap://myldap.com:389/",
"user_tree_dn": "ou=Users,dc=my_new_root,dc=org"
}
}
}
显示域配置的详情。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_config
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
url |
body |
字符串 |
LDAP URL。 |
driver |
body |
字符串 |
Identity 后端驱动程序。 |
ldap |
body |
对象 |
一个 |
config |
body |
对象 |
一个 |
user_tree_dn |
body |
字符串 |
LDAP 的基本可区分名称 (DN),从这里可以访问所有用户。例如, |
identity |
body |
对象 |
一个 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"config": {
"identity": {
"driver": "ldap"
},
"ldap": {
"url": "http://myldap/root",
"user_tree_dn": "ou=Users,dc=root,dc=org"
}
}
}
更新域配置。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_config
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
url |
body |
字符串 |
LDAP URL。 |
driver |
body |
字符串 |
Identity 后端驱动程序。 |
ldap |
body |
对象 |
一个 |
config |
body |
对象 |
一个 |
user_tree_dn |
body |
字符串 |
LDAP 的基本可区分名称 (DN),从这里可以访问所有用户。例如, |
identity |
body |
对象 |
一个 |
示例¶
{
"config": {
"ldap": {
"url": "http://myldap/my_new_root",
"user_tree_dn": "ou=Users,dc=my_new_root,dc=org"
}
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
url |
body |
字符串 |
LDAP URL。 |
driver |
body |
字符串 |
Identity 后端驱动程序。 |
ldap |
body |
对象 |
一个 |
config |
body |
对象 |
一个 |
user_tree_dn |
body |
字符串 |
LDAP 的基本可区分名称 (DN),从这里可以访问所有用户。例如, |
identity |
body |
对象 |
一个 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"config": {
"identity": {
"driver": "ldap"
},
"ldap": {
"url": "http://myldap/my_new_root",
"user_tree_dn": "ou=Users,dc=my_new_root,dc=org"
}
}
}
删除域配置。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_config
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
组织¶
组是用户的集合。每个组都归域所有。
您可以使用组来简化管理用户角色分配的任务。将角色分配给项目或域上的组等同于将该角色分配给该项目或域上的每个组员。
取消将角色从组中取消分配时,该角色将自动从该组的任何成员中取消分配。验证这些用户到相关项目或域的任何令牌都会被撤销。
与用户一样,如果没有分配任何角色的组,从 OpenStack 服务的角度来看是无用的,并且无法访问任何资源。但是,允许存在没有角色分配的组,以便在将其映射到项目和域之前,从外部源获取或加载用户和组。
列出组。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/groups
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
name (可选) |
查询 |
字符串 |
按组名过滤响应。 |
domain_id (可选) |
查询 |
字符串 |
按域 ID 过滤响应。 |
limit (可选) |
查询 |
整数 |
请求项目大小。返回最多限制值数量的项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。 |
marker (可选) |
查询 |
字符串 |
最后一个项目看到的 ID。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值 |
sort_key (可选) |
查询 |
字符串 |
按属性对资源进行排序 |
sort_dir (可选) |
查询 |
字符串 |
排序方向。有效值为 asc(升序)或 desc(降序)。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
links |
body |
对象 |
指向资源集合的链接。 |
groups |
body |
数组 |
一个 |
description |
body |
字符串 |
组的描述。 |
domain_id |
body |
字符串 |
组的域 ID。 |
id |
body |
字符串 |
组的 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
组的名称。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
示例¶
{
"links": {
"self": "http://example.com/identity/v3/groups",
"previous": null,
"next": null
},
"groups": [
{
"description": "non-admin group",
"domain_id": "default",
"id": "96372bbb152f475aa37e9a76a25a029c",
"links": {
"self": "http://example.com/identity/v3/groups/96372bbb152f475aa37e9a76a25a029c"
},
"name": "nonadmins"
},
{
"description": "openstack admin group",
"domain_id": "default",
"id": "9ce0ad4e58a84d7a97b92f7955d10c92",
"links": {
"self": "http://example.com/identity/v3/groups/9ce0ad4e58a84d7a97b92f7955d10c92"
},
"name": "admins"
}
]
}
创建一个组。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/groups
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group |
body |
对象 |
一个 |
description (可选) |
body |
字符串 |
组的描述。 |
domain_id (可选) |
body |
字符串 |
组的域 ID。如果请求中未提供域 ID,身份服务将尝试从请求中使用的令牌中提取域 ID。请注意,这需要使用域范围的令牌。 |
name |
body |
字符串 |
组的名称。 |
示例¶
{
"group": {
"description": "Contract developers",
"domain_id": "default",
"name": "Contract developers"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group |
body |
对象 |
一个 |
description |
body |
字符串 |
组的描述。 |
domain_id |
body |
字符串 |
组的域 ID。 |
id |
body |
字符串 |
组的 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
组的名称。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
示例¶
{
"group": {
"description": "Contract developers",
"domain_id": "default",
"id": "c0d675eac29945ad9dfd08aa1bb75751",
"links": {
"self": "http://example.com/identity/v3/groups/c0d675eac29945ad9dfd08aa1bb75751"
},
"name": "Contract developers"
}
}
显示组的详细信息。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/group
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group_id |
路径 |
字符串 |
组 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group |
body |
对象 |
一个 |
description |
body |
字符串 |
组的描述。 |
domain_id |
body |
字符串 |
组的域 ID。 |
id |
body |
字符串 |
组的 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
组的名称。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"group": {
"description": "Contract developers",
"domain_id": "default",
"id": "c0d675eac29945ad9dfd08aa1bb75751",
"links": {
"self": "http://example.com/identity/v3/groups/c0d675eac29945ad9dfd08aa1bb75751"
},
"name": "Contract developers"
}
}
更新组。
如果后端驱动程序不支持此功能,则调用将返回 Not Implemented (501) 响应代码。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/group
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group_id |
路径 |
字符串 |
组 ID。 |
group |
body |
对象 |
一个 |
description (可选) |
body |
字符串 |
组的新描述。 |
domain_id (可选) |
body |
字符串 |
组的新域 ID。更改组的域的功能现已弃用,将在后续版本中删除。它在大多数身份服务实现中默认情况下已禁用。 |
name (可选) |
body |
字符串 |
组的新名称。 |
示例¶
{
"group": {
"description": "Contract developers 2016",
"name": "Contract developers 2016"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group |
body |
对象 |
一个 |
description |
body |
字符串 |
组的描述。 |
domain_id |
body |
字符串 |
组的域 ID。 |
id |
body |
字符串 |
组的 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
组的名称。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
501 - 未实现 |
服务器无法识别请求方法,或者缺乏满足请求的能力。 |
示例¶
{
"group": {
"description": "Contract developers 2016",
"domain_id": "default",
"id": "c0d675eac29945ad9dfd08aa1bb75751",
"links": {
"self": "http://example.com/identity/v3/groups/c0d675eac29945ad9dfd08aa1bb75751"
},
"name": "Contract developers 2016"
}
}
删除组。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/group
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group_id |
路径 |
字符串 |
组 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
列出属于某个组的用户。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/group_users
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group_id |
路径 |
字符串 |
组 ID。 |
password_expires_at (可选) |
查询 |
字符串 |
根据用户密码是否过期过滤结果。查询应包含一个 password_expires_at={operator}:{timestamp}
例如 /v3/users?password_expires_at=lt:2016-12-08T22:02:00Z
例如,将返回密码在时间戳 ( |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"links": {
"self": "http://example.com/identity/v3/groups/9ce0ad4e58a84d7a97b92f7955d10c92/users",
"previous": null,
"next": null
},
"users": [
{
"domain_id": "default",
"description": null,
"enabled": true,
"id": "acd565a08293c1e48bc0dd0d72ad5d5d"
"name": "Henry",
"links": {
"self": "http://example.com/identity/v3/users/acd565a08293c1e48bc0dd0d72ad5d5d"
}
},
{
"domain_id": "default",
"description": null,
"enabled": true,
"id": "fff603a0829d41e48bc0dd0d72ad61ce",
"name": "Paul",
"links": {
"self": "http://example.com/identity/v3/users/fff603a0829d41e48bc0dd0d72ad61ce"
},
"password_expires_at": "2016-11-06T15:32:17.000000"
}
]
}
将用户添加到组。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/group_user
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
用户 ID。 |
group_id |
路径 |
字符串 |
组 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
验证用户是否属于某个组。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/group_user
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
用户 ID。 |
group_id |
路径 |
字符串 |
组 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
从组中删除用户。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/group_user
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
用户 ID。 |
group_id |
路径 |
字符串 |
组 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
OS-INHERIT¶
启用项目从其所有域或层次结构中较高的项目继承角色分配。
(从 API v3.4 开始) OS-INHERIT 扩展允许从项目和域继承。要访问项目继承,身份服务服务器必须运行至少 API v3.4。
将角色分配给域拥有的项目中的用户。
继承的角色仅应用于拥有的项目(现有项目和未来的项目),并且不会显示为域范围令牌中的角色。
关系:https://docs.openstack.org/api/openstack-identity/3/ext/OS-INHERIT/1.0/rel/domain_user_role_inherited_to_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
user_id |
路径 |
字符串 |
用户 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
继承的角色仅应用于拥有的项目(现有项目和未来的项目),并且不会显示为域范围令牌中的角色。
关系:https://docs.openstack.org/api/openstack-identity/3/ext/OS-INHERIT/1.0/rel/domain_group_role_inherited_to_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
group_id |
路径 |
字符串 |
角色 ID。 |
role_id |
路径 |
字符串 |
用户 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
该列表仅包含指定为在该域内的项目继承的角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/ext/OS-INHERIT/1.0/rel/domain_user_roles_inherited_to_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
user_id |
路径 |
字符串 |
用户 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
示例¶
{
"roles": [
{
"id": "91011",
"links": {
"self": "http://example.com/identity/v3/roles/91011"
},
"name": "admin"
},
{
"id": "91011",
"links": {
"self": "http://example.com/identity/v3/roles/91011"
},
"name": "admin"
}
],
"links": {
"self": "http://example.com/identity/v3/OS-INHERIT/domains/1234/users/5678/roles/inherited_to_projects",
"previous": null,
"next": null
}
}
该列表仅包含指定为在该域内的项目继承的角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/ext/OS-INHERIT/1.0/rel/domain_group_roles_inherited_to_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
group_id |
路径 |
字符串 |
组 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
示例¶
{
"roles": [
{
"id": "91011",
"links": {
"self": "http://example.com/identity/v3/roles/91011"
},
"name": "admin"
},
{
"id": "91011",
"links": {
"self": "http://example.com/identity/v3/roles/91011"
},
"name": "admin"
}
],
"links": {
"self": "http://example.com/identity/v3/OS-INHERIT/domains/1234/groups/5678/roles/inherited_to_projects",
"previous": null,
"next": null
}
}
检查用户是否在域中具有继承的项目角色。
关系:https://docs.openstack.org/api/openstack-identity/3/ext/OS-INHERIT/1.0/rel/domain_user_role_inherited_to_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
user_id |
路径 |
字符串 |
用户 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
检查组是否在域中具有继承的项目角色。
关系:https://docs.openstack.org/api/openstack-identity/3/ext/OS-INHERIT/1.0/rel/domain_group_role_inherited_to_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
group_id |
路径 |
字符串 |
组 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
撤销域中用户的继承项目角色。
关系:https://docs.openstack.org/api/openstack-identity/3/ext/OS-INHERIT/1.0/rel/domain_user_role_inherited_to_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
user_id |
路径 |
字符串 |
用户 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
撤销域中组的继承项目角色。
关系:https://docs.openstack.org/api/openstack-identity/3/ext/OS-INHERIT/1.0/rel/domain_group_role_inherited_to_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
group_id |
路径 |
字符串 |
组 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
继承的角色分配锚定到项目,并应用于项目层次结构中的子树(现有和未来的项目)。
注意:继承的角色不应用于项目本身,仅应用于其子树项目。
注意:用户可以在同一项目上拥有常规(非继承)和继承的角色分配。
注意:请求不需要主体,即使提供也会被忽略。
关系:https://docs.openstack.org/api/openstack-identity/3/ext/OS-INHERIT/1.0/rel/project_user_role_inherited_to_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project_id |
body |
字符串 |
项目的 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
user_id |
路径 |
字符串 |
用户 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
继承的角色分配锚定到项目,并应用于项目层次结构中的子树(现有和未来的项目)。
注意:继承的角色不应用于项目本身,仅应用于其子树项目。
注意:组可以在同一项目上拥有常规(非继承)和继承的角色分配。
注意:请求不需要主体,即使提供也会被忽略。
关系:https://docs.openstack.org/api/openstack-identity/3/ext/OS-INHERIT/1.0/rel/project_group_role_inherited_to_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group_id |
路径 |
字符串 |
组 ID。 |
project_id |
路径 |
字符串 |
项目 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
检查用户是否在项目中具有带有 inherited_to_projects 标志的角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/ext/OS-INHERIT/1.0/rel/project_user_role_inherited_to_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project_id |
路径 |
字符串 |
项目 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
user_id |
路径 |
字符串 |
用户 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
检查组是否在项目中具有带有 inherited_to_projects 标志的角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/ext/OS-INHERIT/1.0/rel/project_group_role_inherited_to_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group_id |
路径 |
字符串 |
组 ID。 |
project_id |
路径 |
字符串 |
项目 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
关系:https://docs.openstack.org/api/openstack-identity/3/ext/OS-INHERIT/1.0/rel/project_user_role_inherited_to_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project_id |
路径 |
字符串 |
项目 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
user_id |
路径 |
字符串 |
用户 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
关系:https://docs.openstack.org/api/openstack-identity/3/ext/OS-INHERIT/1.0/rel/project_group_role_inherited_to_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group_id |
路径 |
字符串 |
组 ID。 |
project_id |
路径 |
字符串 |
项目 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
获取角色分配列表。
如果未指定任何查询参数,则此 API 将返回所有角色分配的列表。
{
"role_assignments": [
{
"links": {
"assignment": "http://example.com/identity/v3/domains/161718/users/313233/roles/123456"
},
"role": {
"id": "123456"
},
"scope": {
"domain": {
"id": "161718"
}
},
"user": {
"id": "313233"
}
},
{
"group": {
"id": "101112"
},
"links": {
"assignment": "http://example.com/identity/v3/projects/456789/groups/101112/roles/123456"
},
"role": {
"id": "123456"
},
"scope": {
"project": {
"id": "456789"
}
}
}
],
"links": {
"self": "http://example.com/identity/v3/role_assignments",
"previous": null,
"next": null
}
}
由于此列表可能非常长,因此此 API 通常总是与一个或多个过滤器查询一起使用。一些典型示例是
GET /v3/role_assignments?user.id={user_id} 将列出涉及指定用户的所有角色分配。
GET /v3/role_assignments?scope.project.id={project_id} 将列出涉及指定项目的所有角色分配。
也可以列出项目树中的所有角色分配:GET /v3/role_assignments?scope.project.id={project_id}&include_subtree=true 将列出涉及指定项目和所有子项目的角色分配。include_subtree=true 只能与 scope.project.id 一起指定,如果未指定后者,将返回 HTTP 400 Bad Request。
集合中的每个角色分配实体都包含指向导致此实体的分配的链接。
列表响应中的 scope 部分已扩展,以允许表示继承到项目的角色分配。
{
"role_assignments": [
{
"links": {
"assignment": "http://example.com/identity/v3/OS-INHERIT/domains/161718/users/313233/roles/123456/inherited_to_projects"
},
"role": {
"id": "123456"
},
"scope": {
"domain": {
"id": "161718"
},
"OS-INHERIT:inherited_to": "projects"
},
"user": {
"id": "313233"
}
},
{
"group": {
"id": "101112-"
},
"links": {
"assignment": "http://example.com/identity/v3/projects/456789/groups/101112/roles/123456"
},
"role": {
"id": "123456"
},
"scope": {
"project": {
"id": "456789"
}
}
}
],
"links": {
"self": "http://example.com/identity/v3/role_assignments",
"previous": null,
"next": null
}
}
查询过滤器 scope.OS-INHERIT:inherited_to 可用于基于继承的角色分配进行过滤。scope.OS-INHERIT:inherited_to 的唯一支持值为 projects,表示此角色已继承到拥有域或父项目的所有项目。
如果指定了查询参数 effective,则 API 不会简单地返回已进行的角色分配列表,而是返回用户、项目和域级别上的有效分配列表,并考虑了组成员资格、角色推断规则以及从父域或项目继承的影响。由于已考虑了组成员资格的影响,组角色分配实体本身将不会在集合中返回。同样,由于已考虑了继承的影响,指定继承本身的的角色分配实体也不会在集合中返回。这代表了将包含在作用域令牌中的有效角色分配。相同的查询参数集也可以与 effective 参数结合使用。
例如
GET /v3/role_assignments?user.id={user_id}&effective 换句话说,将回答“此用户实际上可以做什么?”的问题。
GET /v3/role_assignments?user.id={user_id}&scope.project.id={project_id}&effective 将返回项目作用域令牌的令牌响应中包含的等效角色分配集。
下面给出了一个指定查询参数 effective 的 API 调用示例响应
{
"role_assignments": [
{
"links": {
"assignment": "http://example.com/identity/v3/domains/161718/users/313233/roles/123456"
},
"role": {
"id": "123456"
},
"scope": {
"domain": {
"id": "161718"
}
},
"user": {
"id": "313233"
}
},
{
"links": {
"assignment": "http://example.com/identity/v3/projects/456789/groups/101112/roles/123456",
"membership": "http://example.com/identity/v3/groups/101112/users/313233"
},
"role": {
"id": "123456"
},
"scope": {
"project": {
"id": "456789"
}
},
"user": {
"id": "313234"
}
}
],
"links": {
"self": "http://example.com/identity/v3/role_assignments?effective",
"previous": null,
"next": null
}
}
使用查询参数 effective 的响应的 links 部分还包含,对于由于组成员资格而包含的实体,可用于访问组的成员资格的 URL。
如果指定了查询参数 include_names,则集合将包含实体 ID 以及实体名称,而不仅仅是返回角色分配中的实体 ID。例如
GET /v3/role_assignments?user.id={user_id}&effective&include_names=true 将返回
{
"role_assignments": [
{
"links": {
"assignment": "http://example.com/identity/v3/domains/161718/users/313233/roles/123456"
},
"role": {
"domain": {
"id": "161718",
"name": "Default"
},
"id": "123456",
"name": "admin"
},
"scope": {
"domain": {
"id": "161718",
"name": "Default"
}
},
"user": {
"domain": {
"id": "161718",
"name": "Default"
},
"id": "313233",
"name": "admin"
}
},
{
"links": {
"assignment": "http://example.com/identity/v3/projects/456789/groups/101112/roles/123456",
"membership": "http://example.com/identity/v3/groups/101112/users/313233"
},
"role": {
"domain": {
"id": "161718",
"name": "Default"
},
"id": "123456",
"name": "admin"
},
"scope": {
"project": {
"domain": {
"id": "161718",
"name": "Default"
}
"id": "456789",
"name": "admin"
}
},
"user": {
"domain": {
"id": "161718",
"name": "Default"
},
"id": "313233",
"name": "admin"
}
}
],
"links": {
"self": "http://example.com/identity/v3/role_assignments?effective&include_names=true",
"previous": null,
"next": null
}
}
关系:https://docs.openstack.org/api/openstack-identity/3/rel/role_assignments
请求¶
参数¶
可选查询参数
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
effective (可选) |
查询 |
key-only (不需要值) |
返回有效分配,包括通过组成员资格获得的所有分配。 |
include_names (可选) |
查询 |
布尔值 |
如果设置为 true,则返回的任何实体的名称将包含在其 ID 中。任何其他值(包括没有值)都将被解释为 true。 版本 3.6 中新增 |
include_subtree (可选) |
查询 |
布尔值 |
如果设置为 true,则项目树层次结构中项目指定在 版本 3.6 中新增 |
group.id (可选) |
查询 |
字符串 |
按组 ID 过滤响应。 |
role.id (可选) |
查询 |
字符串 |
按角色 ID 过滤响应。 |
scope.domain.id (可选) |
查询 |
字符串 |
按域 ID 过滤响应。 |
scope.OS-INHERIT:inherited_to (可选) |
查询 |
字符串 |
基于继承的角色分配进行过滤。 |
scope.project.id (可选) |
查询 |
字符串 |
按项目 ID 过滤响应。 |
user.id (可选) |
查询 |
字符串 |
按用户 ID 过滤响应。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
OS-PKI(已弃用)¶
列出已撤销的 PKI 令牌。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/tokens/OS-PKI/revoked
响应¶
状态码¶
错误¶
代码 |
原因 |
|---|---|
410 - 已消失 |
对目标资源的访问请求不再可用。 |
策略¶
警告
policies API 已弃用。Keystone 不是策略管理服务。请勿使用此服务。
策略是远程服务要使用的任意序列化的策略引擎规则集。
您将策略规则集编码为 blob,远程服务可以消耗它。为此,将 type 设置为 application/json,并将策略规则作为 JSON 字符串指定在 blob 中。例如
{
"blob":{
"foobar_user":[
"role:compute-user"
]
}
}
创建策略。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/policies
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
policy |
body |
对象 |
一个 |
type |
body |
字符串 |
序列化策略 blob 的 MIME 媒体类型。 |
blob |
body |
字符串 |
策略规则集本身,作为序列化的 blob。 |
示例¶
{
"policy": {
"blob": "{'foobar_user': 'role:compute-user'}",
"type": "application/json"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
links |
body |
对象 |
|
blob |
body |
字符串 |
策略规则集本身,作为序列化的 blob。 |
policy |
body |
对象 |
一个 |
type |
body |
字符串 |
序列化策略 blob 的 MIME 媒体类型。 |
id |
body |
字符串 |
策略 ID。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
列出策略。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/policies
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
type (可选) |
查询 |
字符串 |
根据序列化策略 blob 的 MIME 媒体类型过滤响应。例如, |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
links |
body |
对象 |
|
blob |
body |
对象 |
策略规则本身,作为序列化的 blob。 |
策略 |
body |
数组 |
一个 |
type |
body |
字符串 |
序列化策略 blob 的 MIME 媒体类型。 |
id |
body |
字符串 |
策略 ID。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"links": {
"next": null,
"previous": null,
"self": "http://example.com/identity/v3/policies"
},
"policies": [
{
"blob": {
"foobar_user": [
"role:compute-user"
]
},
"id": "717273",
"links": {
"self": "http://example.com/identity/v3/policies/717273"
},
"type": "application/json"
},
{
"blob": {
"foobar_user": [
"role:compute-user"
]
},
"id": "717274",
"links": {
"self": "http://example.com/identity/v3/policies/717274"
},
"type": "application/json"
}
]
}
显示策略的详情。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/policy
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
policy_id |
路径 |
字符串 |
策略 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
links |
body |
对象 |
|
blob |
body |
对象 |
策略规则本身,作为序列化的 blob。 |
policy |
body |
对象 |
一个 |
type |
body |
字符串 |
序列化策略 blob 的 MIME 媒体类型。 |
id |
body |
字符串 |
策略 ID。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"policy": {
"blob": {
"foobar_user": [
"role:compute-user"
]
},
"id": "717273",
"links": {
"self": "http://example.com/identity/v3/policies/717273"
},
"type": "application/json"
}
}
更新一个策略。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/policy
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
policy_id |
路径 |
字符串 |
策略 ID。 |
policy |
body |
对象 |
一个 |
type |
body |
字符串 |
序列化策略 blob 的 MIME 媒体类型。 |
blob |
body |
对象 |
策略规则本身,作为序列化的 blob。 |
示例¶
{
"policy": {
"blob": {
"foobar_user": [
"role:compute-user"
]
},
"type": "application/json"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
links |
body |
对象 |
|
blob |
body |
对象 |
策略规则本身,作为序列化的 blob。 |
policy |
body |
对象 |
一个 |
type |
body |
字符串 |
序列化策略 blob 的 MIME 媒体类型。 |
id |
body |
字符串 |
策略 ID。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"policy": {
"blob": {
"foobar_user": [
"role:compute-user"
]
},
"id": "717273",
"links": {
"self": "http://example.com/identity/v3/policies/717273"
},
"type": "application/json"
}
}
删除一个策略。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/policy
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
policy_id |
路径 |
字符串 |
策略 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
项目¶
项目是资源所有权的基准单位。资源由特定的项目拥有。项目由特定的域拥有。
(自 Identity API v3.4 起) 您可以通过在创建项目时设置 parent_id 来创建项目层次结构。层次结构中的所有项目必须由同一个域拥有。
(自 Identity API v3.6 起) 项目除了作为 OpenStack 资源的容器外,还可以充当域(通过将属性 is_domain 设置为 true),在这种情况下,它提供了一个命名空间,可以在其中创建用户、组和其他项目。实际上,使用 POST /domains API 创建的域实际上将表示为一个 is_domain 设置为 true 且没有父级的项目(parent_id 为 null)。
鉴于此,所有项目都被视为项目层次结构的一部分。在 v3.6 之前在域中创建的项目表示为两层层次结构,其中一个项目具有设置为 true 的 is_domain 作为根,所有其他项目将其根作为其父级。
充当域的项目也可以潜在地充当 OpenStack 资源的容器,但这取决于相关资源创建的策略规则是否允许这样做。
注意
项目的名称必须在域内唯一,且不能超过 64 个字符。项目的名称必须能够以有效的 JSON 发送,这可以是任何 UTF-8 字符。但是,这受到项目名称存储的给定后端的约束。例如,MySQL 的限制规定 UTF-8 支持仅限于基本多文种平面 (BMP) 中的字符。不允许使用补充字符。请注意,后一种限制通常适用于 Identity API 资源中的所有 names。
列出项目。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id (可选) |
查询 |
字符串 |
按域 ID 过滤响应。 |
enabled(可选) |
查询 |
布尔值 |
如果设置为 true,则仅返回启用的项目。任何其他值(包括没有值)都将被解释为 true。 |
is_domain (可选) |
查询 |
布尔值 |
如果将其指定为 true,则仅包含充当域的项目。否则,仅包含不充当域的项目。 版本 3.6 中新增 |
name (可选) |
查询 |
字符串 |
根据项目名称过滤响应。 |
parent_id (可选) |
查询 |
字符串 |
根据父 ID 过滤响应。 新增于版本 3.4 |
limit (可选) |
查询 |
整数 |
请求项目大小。返回最多限制值数量的项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。 |
marker (可选) |
查询 |
字符串 |
最后一个项目看到的 ID。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
links |
body |
对象 |
指向资源集合的链接。 |
projects |
body |
数组 |
一个 |
is_domain |
body |
布尔值 |
指示项目是否也充当域。如果设置为 版本 3.6 中新增 |
description |
body |
字符串 |
项目的描述。 |
domain_id |
body |
字符串 |
项目的域 ID。 |
enabled |
body |
布尔值 |
如果设置为 |
id |
body |
字符串 |
项目的 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
项目的名称。 |
parent_id |
body |
字符串 |
项目的父 ID。 新增于版本 3.4 |
tags |
body |
数组 |
分配给项目的简单字符串列表。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
示例¶
{
"links": {
"next": null,
"previous": null,
"self": "http://example.com/identity/v3/projects"
},
"projects": [
{
"is_domain": false,
"description": null,
"domain_id": "default",
"enabled": true,
"id": "0c4e939acacf4376bdcd1129f1a054ad",
"links": {
"self": "http://example.com/identity/v3/projects/0c4e939acacf4376bdcd1129f1a054ad"
},
"name": "admin",
"parent_id": null,
"tags": []
},
{
"is_domain": false,
"description": null,
"domain_id": "default",
"enabled": true,
"id": "0cbd49cbf76d405d9c86562e1d579bd3",
"links": {
"self": "http://example.com/identity/v3/projects/0cbd49cbf76d405d9c86562e1d579bd3"
},
"name": "demo",
"parent_id": null,
"tags": []
},
{
"is_domain": false,
"description": null,
"domain_id": "default",
"enabled": true,
"id": "2db68fed84324f29bb73130c6c2094fb",
"links": {
"self": "http://example.com/identity/v3/projects/2db68fed84324f29bb73130c6c2094fb"
},
"name": "swifttenanttest2",
"parent_id": null,
"tags": []
},
{
"is_domain": false,
"description": null,
"domain_id": "default",
"enabled": true,
"id": "3d594eb0f04741069dbbb521635b21c7",
"links": {
"self": "http://example.com/identity/v3/projects/3d594eb0f04741069dbbb521635b21c7"
},
"name": "service",
"parent_id": null,
"tags": []
},
{
"is_domain": false,
"description": null,
"domain_id": "default",
"enabled": true,
"id": "43ebde53fc314b1c9ea2b8c5dc744927",
"links": {
"self": "http://example.com/identity/v3/projects/43ebde53fc314b1c9ea2b8c5dc744927"
},
"name": "swifttenanttest1",
"parent_id": null,
"tags": []
},
{
"is_domain": false,
"description": "",
"domain_id": "1bc2169ca88e4cdaaba46d4c15390b65",
"enabled": true,
"id": "4b1eb781a47440acb8af9850103e537f",
"links": {
"self": "http://example.com/identity/v3/projects/4b1eb781a47440acb8af9850103e537f"
},
"name": "swifttenanttest4",
"parent_id": null,
"tags": []
},
{
"is_domain": false,
"description": null,
"domain_id": "default",
"enabled": true,
"id": "5961c443439d4fcebe42643723755e9d",
"links": {
"self": "http://example.com/identity/v3/projects/5961c443439d4fcebe42643723755e9d"
},
"name": "invisible_to_admin",
"parent_id": null,
"tags": []
},
{
"is_domain": false,
"description": null,
"domain_id": "default",
"enabled": true,
"id": "fdb8424c4e4f4c0ba32c52e2de3bd80e",
"links": {
"self": "http://example.com/identity/v3/projects/fdb8424c4e4f4c0ba32c52e2de3bd80e"
},
"name": "alt_demo",
"parent_id": null,
"tags": []
}
]
}
创建一个项目,该项目可以充当域。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project |
body |
对象 |
一个 |
name |
body |
字符串 |
项目的名称,必须在拥有域内唯一。项目可以与其域具有相同的名称。 |
is_domain (可选) |
body |
布尔值 |
指示项目是否也充当域。如果设置为 版本 3.6 中新增 |
description (可选) |
body |
字符串 |
项目的描述。 |
domain_id (可选) |
body |
字符串 |
项目的域 ID。 对于充当域的项目,不得指定 对于常规项目(即,不充当域的项目),如果未指定 |
enabled(可选) |
body |
布尔值 |
如果设置为 |
parent_id (可选) |
body |
字符串 |
项目的父 ID。 如果在项目创建时指定,这将项目置于层次结构中,并隐式定义拥有域,该域将与指定的父级相同。如果未指定
新增于版本 3.4 |
tags (可选) |
body |
数组 |
分配给项目的简单字符串列表。可以使用标签将项目分类到组中。 |
options (可选) |
body |
对象 |
项目的资源选项。可用的资源选项是 |
示例¶
创建常规项目的示例
{
"project": {
"description": "My new project",
"domain_id": "default",
"enabled": true,
"is_domain": false,
"name": "myNewProject",
"options": {}
}
}
创建也充当域的项目示例
{
"project": {
"description": "My new domain",
"enabled": true,
"is_domain": true,
"name": "myNewDomain"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project |
body |
对象 |
一个 |
is_domain |
body |
布尔值 |
指示项目是否也充当域。如果设置为 版本 3.6 中新增 |
description |
body |
字符串 |
项目的描述。 |
domain_id |
body |
字符串 |
项目的域 ID。 |
enabled |
body |
布尔值 |
如果设置为 |
id |
body |
字符串 |
项目的 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
项目的名称。 |
parent_id |
body |
字符串 |
项目的父 ID。 新增于版本 3.4 |
选项 |
body |
对象 |
项目的资源选项。可用的资源选项是 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
显示项目的详情。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/project
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project_id |
路径 |
字符串 |
项目 ID。 |
parents_as_list (可选) |
查询 |
仅键,不期望值 |
父层次结构将作为列表包含在响应中。此列表将包含通过遍历到顶级项目找到的项目。返回的列表将根据用户具有有效角色分配的项目进行过滤。 新增于版本 3.4 |
subtree_as_list (可选) |
查询 |
仅键,不期望值 |
子层次结构将作为列表包含在响应中。此列表将包含通过遍历找到的项目。返回的列表将根据用户具有有效角色分配的项目进行过滤。 新增于版本 3.4 |
parents_as_ids (可选) |
查询 |
仅键,不期望值 |
整个父层次结构将作为嵌套字典包含在响应中。它将包含通过遍历到顶级项目找到的所有项目 ID。 新增于版本 3.4 |
subtree_as_ids (可选) |
查询 |
仅键,不期望值 |
整个子层次结构将作为嵌套字典包含在响应中。它将包含所有遍历找到的项目 ID。 新增于版本 3.4 |
include_limits (可选) |
查询 |
仅键,不期望值 |
应与 parents_as_list 或 subtree_as_list 过滤器一起使用,以将相关的项目限制添加到响应主体中。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project |
body |
对象 |
一个 |
is_domain |
body |
布尔值 |
指示项目是否也充当域。如果设置为 版本 3.6 中新增 |
description |
body |
字符串 |
项目的描述。 |
domain_id |
body |
字符串 |
项目的域 ID。 |
enabled |
body |
布尔值 |
如果设置为 |
id |
body |
字符串 |
项目的 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
项目的名称。 |
parent_id |
body |
字符串 |
项目的父 ID。 新增于版本 3.4 |
选项 |
body |
对象 |
项目的资源选项。可用的资源选项是 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"project": {
"is_domain": false,
"description": null,
"domain_id": "default",
"enabled": true,
"id": "0c4e939acacf4376bdcd1129f1a054ad",
"links": {
"self": "http://example.com/identity/v3/projects/0c4e939acacf4376bdcd1129f1a054ad"
},
"name": "admin",
"parent_id": "default",
"options": {}
}
}
带有 parents_as_list 的示例¶
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "263fd9",
"links": {
"self": "http://example.com/identity/v3/projects/263fd9"
},
"name": "Dev Group A",
"options": {},
"parent_id": "183ab2",
"parents": [
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "183ab2",
"links": {
"self": "http://example.com/identity/v3/projects/183ab2"
},
"name": "Dev Group A Parent",
"parent_id": null
}
}
]
}
}
带有 subtree_as_list 的示例¶
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "263fd9",
"links": {
"self": "http://example.com/identity/v3/projects/263fd9"
},
"name": "Dev Group A",
"options": {},
"parent_id": "183ab2",
"subtree": [
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "9n1jhb",
"links": {
"self": "http://example.com/identity/v3/projects/9n1jhb"
},
"name": "Dev Group A Child 1",
"parent_id": "263fd9"
}
},
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "4b6aa1",
"links": {
"self": "http://example.com/identity/v3/projects/4b6aa1"
},
"name": "Dev Group A Child 2",
"parent_id": "263fd9"
}
},
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "b76eq8",
"links": {
"self": "http://example.com/identity/v3/projects/b76xq8"
},
"name": "Dev Group A Grandchild",
"parent_id": "4b6aa1"
}
}
]
}
}
更新一个项目。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/project
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project_id |
路径 |
字符串 |
项目 ID。 |
project |
body |
对象 |
一个 |
name (可选) |
body |
字符串 |
项目的名称,必须在拥有域内唯一。项目可以与其域具有相同的名称。 |
is_domain (可选) |
body |
布尔值 |
指示项目是否也充当域。如果设置为 版本 3.6 中新增 |
description (可选) |
body |
字符串 |
项目的描述。 |
domain_id (可选) |
body |
字符串 |
新域的 ID。更改项目的域现在已弃用,将在后续版本中删除。它在大多数 Identity 服务实现中默认情况下已禁用。 |
enabled(可选) |
body |
布尔值 |
如果设置为 |
tags (可选) |
body |
数组 |
分配给项目的简单字符串列表。可以使用标签将项目分类到组中。 |
options (可选) |
body |
对象 |
项目的资源选项。可用的资源选项是 |
示例¶
{
"project": {
"description": "My updated project",
"name": "myUpdatedProject"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project |
body |
对象 |
一个 |
is_domain |
body |
布尔值 |
指示项目是否也充当域。如果设置为 版本 3.6 中新增 |
description |
body |
字符串 |
项目的描述。 |
domain_id |
body |
字符串 |
项目的域 ID。 |
enabled |
body |
布尔值 |
如果设置为 |
id |
body |
字符串 |
项目的 ID。 |
name |
body |
字符串 |
项目的名称。 |
links |
body |
对象 |
指向相关资源的链接。 |
parent_id |
body |
字符串 |
项目的父 ID。 新增于版本 3.4 |
选项 |
body |
对象 |
项目的资源选项。可用的资源选项是 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
示例¶
{
"project": {
"description": "My updated project",
"domain_id": null,
"links": {
"self": "http://example.com/identity/v3/projects/93ebbcc35335488b96ff9cd7d18cbb2e"
},
"enabled": true,
"id": "93ebbcc35335488b96ff9cd7d18cbb2e",
"is_domain": true,
"name": "myUpdatedProject",
"parent_id": null,
"tags": [],
"options": {}
}
}
删除一个项目。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/project
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project_id |
路径 |
字符串 |
项目 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
区域¶
区域是 OpenStack 部署的一般划分。您可以将零个或多个子区域与区域关联起来,以创建类似树状结构的层次结构。
虽然区域没有地理含义,但部署可以使用地理名称作为区域 ID,例如 us- east。
您可以列出、创建、更新、显示区域的详细信息以及删除区域。
按 ID 显示区域的详细信息。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/regions
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
region_id |
路径 |
字符串 |
区域 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
region |
body |
对象 |
一个 |
description |
body |
字符串 |
区域描述。 |
id |
body |
字符串 |
区域的 ID。 |
links |
body |
对象 |
用于 |
parent_region_id |
body |
字符串 |
要使此区域成为另一个区域的子区域,请将此参数设置为父区域的 ID。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"region": {
"description": "My subregion 3",
"id": "RegionThree",
"links": {
"self": "http://example.com/identity/v3/regions/RegionThree"
},
"parent_region_id": "RegionOne"
}
}
更新一个区域。
您可以更新区域的描述或父区域 ID。您无法更新区域 ID。
可能会发生以下错误
Not Found (404)。父区域 ID 不存在。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/region
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
region_id |
路径 |
字符串 |
区域 ID。 |
region |
body |
对象 |
一个 |
description (可选) |
body |
字符串 |
区域描述。 |
parent_region_id(可选) |
body |
字符串 |
要使此区域成为另一个区域的子区域,请将此参数设置为父区域的 ID。 |
示例¶
{
"region": {
"description": "My subregion 3"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
region |
body |
对象 |
一个 |
description |
body |
字符串 |
区域描述。 |
id |
body |
字符串 |
区域的 ID。 |
links |
body |
对象 |
用于 |
parent_region_id |
body |
字符串 |
要使此区域成为另一个区域的子区域,请将此参数设置为父区域的 ID。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"region": {
"parent_region_id": "RegionOne",
"id": "RegionThree",
"links": {
"self": "http://example.com/identity/v3/regions/RegionThree"
},
"description": "My subregion 3"
}
}
删除一个区域。
可能会发生以下错误
Conflict (409)。由于区域具有子区域,因此无法删除该区域。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/region
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
region_id |
路径 |
字符串 |
区域 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
列出区域。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/regions
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
parent_region_id(可选) |
查询 |
字符串 |
按 ID 过滤响应的父区域。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
regions |
body |
数组 |
一个 |
description |
body |
字符串 |
区域描述。 |
id |
body |
字符串 |
区域的 ID。 |
links |
body |
对象 |
用于 |
parent_region_id |
body |
字符串 |
要使此区域成为另一个区域的子区域,请将此参数设置为父区域的 ID。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
示例¶
{
"links": {
"next": null,
"previous": null,
"self": "http://example.com/identity/v3/regions"
},
"regions": [
{
"description": "",
"id": "RegionOne",
"links": {
"self": "http://example.com/identity/v3/regions/RegionOne"
},
"parent_region_id": null
}
]
}
创建一个区域。
创建区域时,您可以选择指定区域 ID。如果您包含区域 ID 中不允许在 URI 中使用的字符,则必须对 ID 进行 URL 编码。如果您省略 ID,API 会为区域分配 ID。
可能会发生以下错误
Not Found (404)。父区域 ID 不存在。Conflict (409)。父区域 ID 将形成循环关系。Conflict (409)。用户定义的区域 ID 在 OpenStack 部署中不唯一。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/regions
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
region |
body |
对象 |
一个 |
description (可选) |
body |
字符串 |
区域描述。 |
id (可选) |
body |
字符串 |
区域的 ID。 |
parent_region_id(可选) |
body |
字符串 |
要使此区域成为另一个区域的子区域,请将此参数设置为父区域的 ID。 |
示例¶
{
"region": {
"description": "My subregion",
"id": "RegionOneSubRegion",
"parent_region_id": "RegionOne"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
region |
body |
对象 |
一个 |
description |
body |
字符串 |
区域描述。 |
id |
body |
字符串 |
区域的 ID。 |
links |
body |
对象 |
用于 |
parent_region_id |
body |
字符串 |
要使此区域成为另一个区域的子区域,请将此参数设置为父区域的 ID。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
405 - 方法不允许 |
此端点的请求方法无效。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
413 - 请求实体过大 |
请求大小超过服务器愿意或能够处理的限制。 |
415 - 不支持的媒体类型 |
请求实体具有服务器或资源不支持的媒体类型。 |
503 - 服务不可用 |
服务不可用。这通常是由服务配置错误引起的,导致服务无法成功启动。 |
角色¶
OpenStack 服务通常使用基于角色的访问控制 (RBAC) 来确定是否应允许用户的 API 请求。对于 OpenStack,这意味着服务会将用户在项目上拥有的角色(如令牌中的角色所示)与服务策略文件中定义的 API 所需的角色进行比较。用户通过身份服务 API 在项目上获得角色。
角色最初必须作为实体通过身份服务 API 创建,创建后才能分配。您可以将角色分配给用户或组的项目,包括由其他域拥有的项目。您还可以将角色分配给用户或组的域,尽管这仅与使用域范围的令牌执行域级别身份服务 API 请求相关。
使用 URL 中指定的每个属性来创建、检查和删除角色分配。例如,要将角色分配给项目上的用户
PUT /v3/projects/{project_id}/users/{user_id}/roles/{role_id}
您还可以使用这种形式的 API 列出系统中的角色或分配给特定域、项目或用户的角色,但是提供了一个通用的 API 用于列出分配,其中使用查询参数来过滤返回的分配集。例如
列出指定用户的角色分配
GET /role_assignments?user.id={user_id}列出指定项目的角色分配
GET /role_assignments?scope.project.id={project_id}列出特定用户的系统角色分配
GET /role_assignments?scope.system=all?user.id={user_id}列出所有用户和组的系统角色分配
GET /role_assignments?scope.system=all
从 Identity API v3.10 开始,您可以将角色分配授予用户和组在名为 system 的实体上。角色分配 API 还支持列出和过滤系统上的角色分配。
从 Identity API v3.6 开始,您还可以列出项目树中的所有角色分配,例如,以下内容将列出指定项目及其子项目的角色分配
GET /role_assignments?scope.project.id={project_id}&include_subtree=true
如果您指定 include_subtree=true,则还必须指定 scope.project.id。否则,此调用将返回 Bad Request (400) 响应代码。
集合中的每个角色分配实体都包含指向创建该实体的分配的链接。
如前所述,可以将角色分配给用户或组在特定项目、域或整个系统上。如果用户是拥有角色分配的组的成员,那么该用户也将被视为拥有该角色分配,因为其组的成员资格。因此,用户在给定项目或域上的有效角色分配包括他们拥有的任何直接分配,以及他们通过成为也具有给定项目或域上分配的组的成员而获得的任何分配。此有效角色分配集将放置在令牌中,供希望检查策略的服务参考。您可以使用用户、项目和域级别的 effective 查询参数来列出有效角色分配
确定用户实际上可以执行的操作
GET /role_assignments?user.id={user_id}&effective获取包含在项目范围令牌响应中的等效角色分配集
GET /role_assignments?user.id={user_id}&scope.project.id={project_id}&effective
在有效模式下列出时,由于组分配已被有效地扩展为每个用户的分配,因此组角色分配实体本身不会在集合中返回。但是,在响应中,由于组成员资格而获得每个分配的 links 实体部分将包含一个 URL,该 URL 能够访问该组的成员资格。
默认情况下,角色分配 API 调用从集合中仅返回实体的 ID。可以通过在这些调用的任何一个上使用 include_names 查询参数,除了 ID 之外,也可以返回实体的名称,例如
列出包含名称的角色分配
GET /role_assignments?include_names
列出角色。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/roles
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
name (可选) |
查询 |
字符串 |
按角色名称过滤响应。 |
domain_id (可选) |
查询 |
字符串 |
按域 ID 过滤响应。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
links |
body |
对象 |
指向资源集合的链接。 |
roles |
body |
数组 |
一个 |
domain_id |
body |
字符串 |
域的 ID。 |
id |
body |
字符串 |
角色 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
角色名称。 |
description |
body |
字符串 |
角色描述。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
示例¶
{
"links": {
"next": null,
"previous": null,
"self": "http://example.com/identity/v3/roles"
},
"roles": [
{
"id": "5318e65d75574c17bf5339d3df33a5a3",
"links": {
"self": "http://example.com/identity/v3/roles/5318e65d75574c17bf5339d3df33a5a3"
},
"description": "My new role",
"name": "admin"
},
{
"id": "642bcfc75c384fd181adf34d9b2df897",
"links": {
"self": "http://example.com/identity/v3/roles/642bcfc75c384fd181adf34d9b2df897"
},
"description": "My new role",
"name": "anotherrole"
},
{
"id": "779a76d74f544224a7ef8762ca0de627",
"links": {
"self": "http://example.com/identity/v3/roles/779a76d74f544224a7ef8762ca0de627"
},
"description": "My new role",
"name": "Member"
},
{
"id": "9fe2ff9ee4384b1894a90878d3e92bab",
"links": {
"self": "http://example.com/identity/v3/roles/9fe2ff9ee4384b1894a90878d3e92bab"
},
"name": "_member_"
},
{
"id": "ba2dfba61c934ee89e3110de36273229",
"links": {
"self": "http://example.com/identity/v3/roles/ba2dfba61c934ee89e3110de36273229"
},
"description": "My new role",
"name": "ResellerAdmin"
},
{
"id": "f127b97616f24d3ebceb7be840210adc",
"links": {
"self": "http://example.com/identity/v3/roles/f127b97616f24d3ebceb7be840210adc"
},
"description": null,
"name": "service"
}
]
}
创建角色。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/roles
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
role |
body |
对象 |
一个 |
name |
body |
字符串 |
角色名称。 |
domain_id (可选) |
body |
字符串 |
角色的域 ID。 |
description (可选) |
body |
字符串 |
添加关于角色的描述。 |
options (可选) |
body |
对象 |
角色的资源选项。可用的资源选项是 |
示例¶
{
"role": {
"description": "My new role",
"name": "developer"
}
}
特定域角色的示例¶
{
"role": {
"description": "My new role"
"domain_id": "92e782c4988642d783a95f4a87c3fdd7",
"name": "developer"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
role |
body |
对象 |
一个 |
domain_id |
body |
字符串 |
域的 ID。 |
id |
body |
字符串 |
角色 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
角色名称。 |
description |
body |
字符串 |
角色描述。 |
选项 |
body |
对象 |
角色的资源选项。可用的资源选项是 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
显示角色的详情。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
role |
body |
对象 |
一个 |
domain_id |
body |
字符串 |
域的 ID。 |
id |
body |
字符串 |
角色 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
角色名称。 |
description |
body |
字符串 |
角色描述。 |
选项 |
body |
对象 |
角色的资源选项。可用的资源选项是 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"role": {
"domain_id": "d07792fd66ac4ed881723ab9f1c9925f",
"id": "1e443fa8cee3482a8a2b6954dd5c8f12",
"links": {
"self": "http://example.com/identity/v3/roles/1e443fa8cee3482a8a2b6954dd5c8f12"
},
"description": "My new role",
"name": "Developer",
"options": {}
}
}
更新角色。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
role_id |
路径 |
字符串 |
角色 ID。 |
role |
body |
对象 |
一个 |
name (可选) |
body |
字符串 |
新的角色名称。 |
description (可选) |
body |
字符串 |
新的角色描述。 |
options (可选) |
body |
对象 |
角色的资源选项。可用的资源选项是 |
示例¶
{
"role": {
"description": "My new role",
"name": "Developer"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
role |
body |
对象 |
一个 |
domain_id |
body |
字符串 |
域的 ID。 |
id |
body |
字符串 |
角色 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
角色名称。 |
description |
body |
字符串 |
角色描述。 |
选项 |
body |
对象 |
角色的资源选项。可用的资源选项是 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
示例¶
{
"role": {
"domain_id": "73748865fb964ded9e836d491d32dcfb",
"id": "1e443fa8cee3482a8a2b6954dd5c8f12",
"links": {
"self": "http://example.com/identity/v3/roles/1e443fa8cee3482a8a2b6954dd5c8f12"
},
"description": "My new role",
"name": "Developer",
"options": {}
}
}
删除角色。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
列出域上的组的角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_group_roles
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
group_id |
路径 |
字符串 |
组 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
示例¶
{
"roles": [
{
"id": "123456",
"links": {
"self": "http://example.com/identity/v3/roles/123456"
},
"name": "admin"
},
{
"id": "123457",
"links": {
"self": "http://example.com/identity/v3/roles/123457"
},
"name": "manager"
}
],
"links": {
"self": "http://example.com/identity/v3/domains/161718/groups/101112/roles",
"previous": null,
"next": null
}
}
可以使用通用的列表分配 API 实现此请求的功能
GET /role_assignments?group.id={group_id}&scope.domain.id={domain_id}
将角色分配给域上的组。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_group_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
group_id |
路径 |
字符串 |
组 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
验证组是否在域上具有角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_group_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
group_id |
路径 |
字符串 |
组 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
从域上的组取消分配角色。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_group_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
group_id |
路径 |
字符串 |
组 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
列出域上的用户的角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_user_roles
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
user_id |
路径 |
字符串 |
用户 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
roles |
body |
数组 |
一个 |
id |
body |
字符串 |
角色 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
角色名称。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
示例¶
{
"roles": [
{
"id": "123456",
"links": {
"self": "http://example.com/identity/v3/roles/123456"
},
"name": "admin"
},
{
"id": "123457",
"links": {
"self": "http://example.com/identity/v3/roles/123457"
},
"name": "manager"
}
],
"links": {
"self": "http://example.com/identity/v3/domains/161718/users/313233/roles",
"previous": null,
"next": null
}
}
可以使用通用的列表分配 API 实现此请求的功能
GET /role_assignments?user.id={user_id}&scope.domain.id={domain_id}
将角色分配给域上的用户。
关系:https://developer.openstack.org/api-ref/identity/v3/index.html#assign-role-to-user-on-domain
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
user_id |
路径 |
字符串 |
用户 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
验证用户是否在域上具有角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_user_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
user_id |
路径 |
字符串 |
用户 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
从域上的用户取消分配角色。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/domain_user_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id |
路径 |
字符串 |
域 ID。 |
user_id |
路径 |
字符串 |
用户 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
列出项目上的组的角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/project_user_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project_id |
路径 |
字符串 |
项目 ID。 |
group_id |
路径 |
字符串 |
组 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
示例¶
{
"roles": [
{
"id": "123456",
"links": {
"self": "http://example.com/identity/v3/roles/123456"
},
"name": "admin"
},
{
"id": "123457",
"links": {
"self": "http://example.com/identity/v3/roles/123457"
},
"name": "manager"
}
],
"links": {
"self": "http://example.com/identity/v3/projects/456789/groups/101112/roles",
"previous": null,
"next": null
}
}
可以使用通用的列表分配 API 实现此请求的功能
GET /role_assignments?group.id={group_id}&scope.project.id={project_id}
将角色分配给项目上的组。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/project_group_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project_id |
路径 |
字符串 |
项目 ID。 |
group_id |
路径 |
字符串 |
组 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
验证组是否在项目上具有角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/project_group_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project_id |
路径 |
字符串 |
项目 ID。 |
group_id |
路径 |
字符串 |
组 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
从项目上的组取消分配角色。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/project_group_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project_id |
路径 |
字符串 |
项目 ID。 |
group_id |
路径 |
字符串 |
组 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
列出项目上的用户的角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/project_user_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project_id |
路径 |
字符串 |
项目 ID。 |
user_id |
路径 |
字符串 |
用户 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
示例¶
{
"links": {
"self": "http://example.com/identity/v3/projects/9e5a15e2c0dd42aab0990a463e839ac1/users/b964a9e51c0046a4a84d3f83a135a97c/roles",
"previous": null,
"next": null
},
"roles": [
{
"id": "3b5347fa7a144008ba57c0acea469cc3",
"links": {
"self": "http://example.com/identity/v3/roles/3b5347fa7a144008ba57c0acea469cc3"
},
"name": "admin"
}
]
}
可以使用通用的列表分配 API 实现此请求的功能
GET /role_assignments?user.id={user_id}&scope.project.id={project_id}
将角色分配给项目上的用户。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/project_user_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project_id |
路径 |
字符串 |
项目 ID。 |
user_id |
路径 |
字符串 |
用户 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
验证用户是否在项目上具有角色。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/project_user_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project_id |
路径 |
字符串 |
项目 ID。 |
user_id |
路径 |
字符串 |
用户 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
取消用户在项目中的角色。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/project_user_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
project_id |
路径 |
字符串 |
项目 ID。 |
user_id |
路径 |
字符串 |
用户 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
列出角色的推断(推理)角色。
关系:https://developer.openstack.org/api-ref/identity/v3/#list-implied-roles-for-role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
prior_role_id |
路径 |
字符串 |
先前的角色的 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
role_inference |
body |
对象 |
角色推理对象,包含 |
prior_role |
body |
对象 |
一个先前的角色对象。 |
implies |
body |
数组 |
一个推断的角色对象数组。 |
id |
body |
字符串 |
角色 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
角色名称。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"role_inference": {
"prior_role": {
"id": "42c764f0c19146728dbfe73a49cc35c3",
"links": {
"self": "http://example.com/identity/v3/roles/42c764f0c19146728dbfe73a49cc35c3"
},
"name": "prior role name"
},
"implies": [
{
"id": "066fbfc8b3e54fb68784c9e7e92ab8d7",
"links": {
"self": "http://example.com/identity/v3/roles/066fbfc8b3e54fb68784c9e7e92ab8d7"
},
"name": "implied role1 name"
},
{
"id": "32a0df1cc22848aca3986adae9e0b9a0",
"links": {
"self": "http://example.com/identity/v3/roles/32a0df1cc22848aca3986adae9e0b9a0"
},
"name": "implied role2 name"
}
]
},
"links" : {
"self": "http://example.com/identity/v3/roles/42c764f0c19146728dbfe73a49cc35c3/implies"
}
}
创建一个角色推理规则。
关系:https://developer.openstack.org/api-ref/identity/v3/#create-role-inference-rule
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
prior_role_id |
路径 |
字符串 |
先前的角色的 ID。 |
implies_role_id |
路径 |
字符串 |
一个推断角色的 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
role_inference |
body |
对象 |
角色推理对象,包含 |
prior_role |
body |
对象 |
一个先前的角色对象。 |
implies |
body |
对象 |
一个推断的角色对象。 |
id |
body |
字符串 |
角色 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
角色名称。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"role_inference": {
"prior_role": {
"id": "7ceab6192ea34a548cc71b24f72e762c",
"links": {
"self": "http://example.com/identity/v3/roles/7ceab6192ea34a548cc71b24f72e762c"
},
"name": "prior role name"
},
"implies": {
"id": "97e2f5d38bc94842bc3da818c16762ed",
"links": {
"self": "http://example.com/identity/v3/roles/97e2f5d38bc94842bc3da818c16762ed"
},
"name": "implied role name"
}
},
"links": {
"self": "http://example.com/identity/v3/roles/7ceab6192ea34a548cc71b24f72e762c/implies/97e2f5d38bc94842bc3da818c16762ed"
}
}
获取一个角色推理规则。
关系:https://developer.openstack.org/api-ref/identity/v3/#get-role-inference-rule
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
prior_role_id |
路径 |
字符串 |
先前的角色的 ID。 |
implies_role_id |
路径 |
字符串 |
一个推断角色的 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
role_inference |
body |
对象 |
角色推理对象,包含 |
prior_role |
body |
对象 |
一个先前的角色对象。 |
implies |
body |
对象 |
一个推断的角色对象。 |
id |
body |
字符串 |
角色 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
角色名称。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"role_inference": {
"prior_role": {
"id": "7ceab6192ea34a548cc71b24f72e762c",
"links": {
"self": "http://example.com/identity/v3/roles/7ceab6192ea34a548cc71b24f72e762c"
},
"name": "prior role name"
},
"implies": {
"id": "97e2f5d38bc94842bc3da818c16762ed",
"links": {
"self": "http://example.com/identity/v3/roles/97e2f5d38bc94842bc3da818c16762ed"
},
"name": "implied role name"
}
},
"links": {
"self": "http://example.com/identity/v3/roles/7ceab6192ea34a548cc71b24f72e762c/implies/97e2f5d38bc94842bc3da818c16762ed"
}
}
检查一个角色推理规则。
关系:https://developer.openstack.org/api-ref/identity/v3/#confirm-role-inference-rule
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
prior_role_id |
路径 |
字符串 |
先前的角色的 ID。 |
implies_role_id |
路径 |
字符串 |
一个推断角色的 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
状态:204 无内容
删除一个角色推理规则。
关系:https://developer.openstack.org/api-ref/identity/v3/#delete-role-inference-rule
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
prior_role_id |
路径 |
字符串 |
先前的角色的 ID。 |
implies_role_id |
路径 |
字符串 |
一个推断角色的 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
状态:204 无内容
列出角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/role_assignments
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
effective (可选) |
查询 |
key-only (不需要值) |
返回有效分配,包括通过组成员资格获得的所有分配。 |
include_names (可选) |
查询 |
布尔值 |
如果设置为 true,则返回的任何实体的名称将包含在其 ID 中。任何其他值(包括没有值)都将被解释为 true。 版本 3.6 中新增 |
include_subtree (可选) |
查询 |
布尔值 |
如果设置为 true,则项目树层次结构中项目指定在 版本 3.6 中新增 |
group.id (可选) |
查询 |
字符串 |
按组 ID 过滤响应。 |
role.id (可选) |
查询 |
字符串 |
按角色 ID 过滤响应。 |
scope.system (可选) |
查询 |
字符串 |
按系统分配过滤响应。 |
scope.domain.id (可选) |
查询 |
字符串 |
按域 ID 过滤响应。 |
scope.project.id (可选) |
查询 |
字符串 |
按项目 ID 过滤响应。 |
user.id (可选) |
查询 |
字符串 |
按用户 ID 过滤响应。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
role_assignments |
body |
数组 |
一个 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
示例¶
{
"role_assignments": [
{
"links": {
"assignment": "http://example.com/identity/v3/domains/161718/users/313233/roles/123456"
},
"role": {
"id": "123456"
},
"scope": {
"domain": {
"id": "161718"
}
},
"user": {
"id": "313233"
}
},
{
"group": {
"id": "101112"
},
"links": {
"assignment": "http://example.com/identity/v3/projects/456789/groups/101112/roles/123456"
},
"role": {
"id": "123456"
},
"scope": {
"project": {
"id": "456789"
}
}
}
],
"links": {
"self": "http://example.com/identity/v3/role_assignments",
"previous": null,
"next": null
}
}
列出所有角色推理规则。
关系:https://developer.openstack.org/api-ref/identity/v3/#list-all-role-inference-rules
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
role_inferences |
body |
数组 |
一个 |
prior_role |
body |
对象 |
一个先前的角色对象。 |
implies |
body |
对象 |
一个推断的角色对象。 |
id |
body |
字符串 |
角色 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
角色名称。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"role_inferences": [
{
"prior_role": {
"id": "1acd3c5aa0e246b9a7427d252160dcd1",
"links": {
"self": "http://example.com/identity/v3/roles/1acd3c5aa0e246b9a7427d252160dcd1"
},
"description": "My new role",
"name": "prior role name"
},
"implies": [
{
"id": "3602510e2e1f499589f78a0724dcf614",
"links": {
"self": "http://example.com/identity/v3/roles/3602510e2e1f499589f78a0724dcf614"
},
"description": "My new role",
"name": "implied role1 name"
},
{
"id": "738289aeef684e73a987f7cf2ec6d925",
"links": {
"self": "http://example.com/identity/v3/roles/738289aeef684e73a987f7cf2ec6d925"
},
"description": "My new role",
"name": "implied role2 name"
}
]
},
{
"prior_role": {
"id": "bbf7a5098bb34407b7164eb6ff9f144e",
"links": {
"self" : "http://example.com/identity/v3/roles/bbf7a5098bb34407b7164eb6ff9f144e"
},
"description": "My new role",
"name": "prior role name"
},
"implies": [
{
"id": "872b20ad124c4c1bafaef2b1aae316ab",
"links": {
"self": "http://example.com/identity/v3/roles/872b20ad124c4c1bafaef2b1aae316ab"
},
"description": null,
"name": "implied role1 name"
},
{
"id": "1d865b1b2da14cb7b05254677e5f36a2",
"links": {
"self": "http://example.com/identity/v3/roles/1d865b1b2da14cb7b05254677e5f36a2"
},
"description": null,
"name": "implied role2 name"
}
]
}
],
"links": {
"self": "http://example.com/identity/v3/role_inferences"
}
}
系统角色分配¶
系统角色分配最终控制对系统级 API 调用的访问。系统角色分配类似于项目或域角色分配,但针对不同的目标。与其将角色授予项目中的用户或组,不如可以将系统角色授予他们。
系统级 API 的良好示例包括服务目录和计算管理程序的管理。
列出用户拥有的所有系统角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/system_user_roles
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
用户 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
links |
body |
对象 |
指向相关资源的链接。 |
roles |
body |
数组 |
一个 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
示例¶
{
"roles": [
{
"domain_id": null,
"id": "6d550353899f4b0fbf3e410e1b6ddc05",
"links": {
"self": "http://example.com/identity/v3/roles/6d550353899f4b0fbf3e410e1b6ddc05"
},
"name": "admin"
}
],
"links": {
"next": null,
"previous": null,
"self": "http://example.com/identity/v3/system/users/0b916f1b1e51455cb24b3a051520c576/roles"
}
}
可以使用通用的列表分配 API 实现此请求的功能
GET /role_assignments?user.id={user_id}&scope.system
授予用户系统上的角色。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/system_user_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
用户 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
检查特定用户是否在系统上具有角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/system_user_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
用户 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
获取用户的特定系统角色分配。这与 HEAD /v3/system/users/{user_id}/roles/{role_id} API 相同。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/system_user_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
用户 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
从用户处删除系统角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/system_user_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
用户 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
列出群组拥有的所有系统角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/system_group_roles
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group_id |
路径 |
字符串 |
组 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
links |
body |
对象 |
指向相关资源的链接。 |
roles |
body |
数组 |
一个 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
示例¶
{
"roles": [
{
"domain_id": null,
"id": "6d550353899f4b0fbf3e410e1b6ddc05",
"links": {
"self": "http://example.com/identity/v3/roles/6d550353899f4b0fbf3e410e1b6ddc05"
},
"name": "admin"
}
],
"links": {
"next": null,
"previous": null,
"self": "http://example.com/identity/v3/system/groups/934cc15c4d03479ebba167d67d47737f/roles"
}
}
可以使用通用的列表分配 API 实现此请求的功能
GET /role_assignments?group.id={group_id}&scope.system
授予组系统上的角色。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/system_group_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group_id |
路径 |
字符串 |
组 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
检查特定群组是否在系统上具有角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/system_group_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group_id |
路径 |
字符串 |
组 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
获取群组的特定系统角色分配。这与 HEAD /v3/system/groups/{group_id}/roles/{role_id} API 相同。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/system_group_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group_id |
路径 |
字符串 |
组 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
从组中移除系统角色分配。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/system_group_role
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
group_id |
路径 |
字符串 |
组 ID。 |
role_id |
路径 |
字符串 |
角色 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
服务目录和端点¶
服务是可以通过 URL(即端点)访问的 OpenStack Web 服务。
服务目录列出了根据当前授权对调用者可用的服务。
您可以创建、列出、显示、更新和删除服务。创建或更新服务时,您可以启用该服务,这将导致该服务及其端点出现在服务目录中。
您可以创建、列出、显示、更新和删除端点。
列出所有服务。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/services
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
name (可选) |
查询 |
字符串 |
按服务名称过滤响应。 |
type (可选) |
查询 |
字符串 |
按服务类型过滤响应。有效值为 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
name |
body |
字符串 |
服务名称。 |
links |
body |
对象 |
“service”资源的链接。 |
enabled(可选) |
body |
布尔值 |
定义服务及其端点是否出现在服务目录中:- |
services |
body |
数组 |
“service”对象列表。 |
type |
body |
字符串 |
服务类型,描述服务实现 API。值为 |
id |
body |
字符串 |
服务所属的服务的 UUID。 |
description (可选) |
body |
字符串 |
服务描述。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
示例¶
{
"links": {
"next": null,
"previous": null,
"self": "http://example.com/identity/v3/services"
},
"services": [
{
"description": "Nova Compute Service",
"enabled": true,
"id": "1999c3a858c7408fb586817620695098",
"links": {
"self": "http://example.com/identity/v3/services/1999c3a858c7408fb586817620695098"
},
"name": "nova",
"type": "compute"
},
{
"description": "Cinder Volume Service V2",
"enabled": true,
"id": "39216610e75547f1883037e11976fc0f",
"links": {
"self": "http://example.com/identity/v3/services/39216610e75547f1883037e11976fc0f"
},
"name": "cinderv2",
"type": "volumev2"
},
{
"description": "Neutron Service",
"enabled": true,
"id": "4fe41a27de3341af9100123f765eac0d",
"links": {
"self": "http://example.com/identity/v3/services/4fe41a27de3341af9100123f765eac0d"
},
"name": "neutron",
"type": "network"
},
{
"description": "EC2 Compatibility Layer",
"enabled": true,
"id": "61d3d05bdd1449f18923c83f52a4d762",
"links": {
"self": "http://example.com/identity/v3/services/61d3d05bdd1449f18923c83f52a4d762"
},
"name": "ec2",
"type": "ec2"
},
{
"description": "Glance Image Service",
"enabled": true,
"id": "69afa3d57d1948ea988beeb252bbaa5d",
"links": {
"self": "http://example.com/identity/v3/services/69afa3d57d1948ea988beeb252bbaa5d"
},
"name": "glance",
"type": "image"
},
{
"description": "Nova Compute Service V2.1",
"enabled": true,
"id": "79b691ee7be649d9bf8613efc0960206",
"links": {
"self": "http://example.com/identity/v3/services/79b691ee7be649d9bf8613efc0960206"
},
"name": "novav21",
"type": "computev21"
},
{
"description": "Swift Service",
"enabled": true,
"id": "92419b70ebe64c6c873bd20b14360e6b",
"links": {
"self": "http://example.com/identity/v3/services/92419b70ebe64c6c873bd20b14360e6b"
},
"name": "swift",
"type": "object-store"
},
{
"description": "Keystone Identity Service",
"enabled": true,
"id": "b8f8454fc07b46b781204d2a436f9d1c",
"links": {
"self": "http://example.com/identity/v3/services/b8f8454fc07b46b781204d2a436f9d1c"
},
"name": "keystone",
"type": "identity"
},
{
"description": "Cinder Volume Service",
"enabled": true,
"id": "cdda3bea0742407f95e70f4758f46558",
"links": {
"self": "http://example.com/identity/v3/services/cdda3bea0742407f95e70f4758f46558"
},
"name": "cinder",
"type": "volume"
}
]
}
创建服务。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/services
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
description (可选) |
body |
字符串 |
服务描述。 |
服务 |
body |
对象 |
“service”对象。 |
enabled(可选) |
body |
布尔值 |
定义服务及其端点是否出现在服务目录中:- |
type |
body |
字符串 |
服务类型,描述服务实现 API。值为 |
name |
body |
字符串 |
服务名称。 |
示例¶
{
"service": {
"type": "compute",
"name": "compute2",
"description": "Compute service 2"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
name |
body |
字符串 |
服务名称。 |
服务 |
body |
对象 |
“service”对象。 |
links |
body |
对象 |
“service”资源的链接。 |
type |
body |
字符串 |
服务类型,描述服务实现 API。值为 |
id |
body |
字符串 |
服务所属的服务的 UUID。 |
description (可选) |
body |
字符串 |
服务描述。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
显示服务的详情。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/service
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
service_id |
路径 |
字符串 |
服务 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
name |
body |
字符串 |
服务名称。 |
服务 |
body |
对象 |
“service”对象。 |
links |
body |
对象 |
“service”资源的链接。 |
type |
body |
字符串 |
服务类型,描述服务实现 API。值为 |
id |
body |
字符串 |
服务所属的服务的 UUID。 |
description (可选) |
body |
字符串 |
服务描述。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"service": {
"description": "Keystone Identity Service",
"enabled": true,
"id": "686766",
"links": {
"self": "http://example.com/identity/v3/services/686766"
},
"name": "keystone",
"type": "identity"
}
}
更新服务。
请求体与创建服务请求体相同,除了您仅包含想要更新的属性。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/services
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
type |
body |
字符串 |
服务类型,描述服务实现 API。值为 |
enabled(可选) |
body |
布尔值 |
定义服务及其端点是否出现在服务目录中:- |
description (可选) |
body |
字符串 |
服务描述。 |
服务 |
body |
对象 |
“service”对象。 |
name |
body |
字符串 |
服务名称。 |
service_id |
路径 |
字符串 |
服务 ID。 |
示例¶
{
"service": {
"description": "Block Storage Service V2"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
name |
body |
字符串 |
服务名称。 |
服务 |
body |
对象 |
“service”对象。 |
links |
body |
对象 |
“service”资源的链接。 |
type |
body |
字符串 |
服务类型,描述服务实现 API。值为 |
id |
body |
字符串 |
服务所属的服务的 UUID。 |
description (可选) |
body |
字符串 |
服务描述。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
示例¶
{
"service": {
"name": "cinderv2",
"links": {
"self": "http://example.com/identity/v3/services/5789da9864004dd088fce14c1c626a4b"
},
"enabled": true,
"type": "volumev2",
"id": "5789da9864004dd088fce14c1c626a4b",
"description": "Block Storage Service V2"
}
}
删除服务。
如果您尝试删除仍具有关联端点的服务,则此调用将删除所有关联的端点,或者在删除所有端点之前失败。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/service
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
service_id |
路径 |
字符串 |
服务 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
列出所有可用端点。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/endpoints
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
接口(可选) |
查询 |
字符串 |
按接口过滤响应。 |
service_id(可选) |
查询 |
字符串 |
按服务 ID 过滤响应。 |
region_id(可选) |
查询 |
字符串 |
按区域 ID 过滤响应。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
region_id |
body |
字符串 |
(从 v3.2 开始)包含服务端点的区域的 ID。 |
links |
body |
对象 |
“endpoints”资源的链接。 |
url |
body |
字符串 |
端点 URL。 |
region |
body |
字符串 |
(在 v3.2 中已弃用)服务端点的地理位置。 |
enabled |
body |
布尔值 |
指示端点是否出现在服务目录中:- |
接口 |
body |
字符串 |
接口类型,描述端点的可见性。值为:- |
service_id |
body |
字符串 |
服务所属的服务的 UUID。 |
endpoints |
body |
数组 |
一个 |
id |
body |
字符串 |
端点 ID。 |
name (可选) |
body |
字符串 |
(已弃用)端点名称。仅当资源上设置时,才会响应中返回该字段。 此字段已弃用,因为它没有价值。端点最好通过描述它们的组合服务、区域和接口或其 ID 来描述。 |
description (可选) |
body |
字符串 |
端点描述。仅在资源上设置时才返回。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
示例¶
{
"endpoints": [
{
"enabled": true,
"id": "0649c5be323f4792afbc1efdd480847d",
"interface": "internal",
"links": {
"self": "http://example.com/identity/v3/endpoints/0649c5be323f4792afbc1efdd480847d"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "ef6b15e425814dc69d830361baae0e33",
"url": "http://23.253.211.234:8080/v1/AUTH_$(tenant_id)s"
},
{
"enabled": true,
"id": "06b85ed2aa57413ca0b1813daed329a9",
"interface": "internal",
"links": {
"self": "http://example.com/identity/v3/endpoints/06b85ed2aa57413ca0b1813daed329a9"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "98cfd5347fb84601b2f88f3afd8dddd4",
"url": "http://23.253.211.234:8776/v1/$(tenant_id)s"
},
{
"enabled": true,
"id": "070102f162e04f91a52c7887d0604163",
"interface": "admin",
"links": {
"self": "http://example.com/identity/v3/endpoints/070102f162e04f91a52c7887d0604163"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "312f401c14d143d8b3e3f4daf0418add",
"url": "http://23.253.211.234:8774/v2.1/$(tenant_id)s"
},
{
"enabled": true,
"id": "0fd73b621e424cc0a172853264519cbc",
"interface": "admin",
"links": {
"self": "http://example.com/identity/v3/endpoints/0fd73b621e424cc0a172853264519cbc"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "17a877162c8e405b81d563d95ec4e3f8",
"url": "http://23.253.211.234:8776/v2/$(tenant_id)s"
},
{
"enabled": true,
"id": "1899667a3b1544ccb355fdfc4184d7d7",
"interface": "public",
"links": {
"self": "http://example.com/identity/v3/endpoints/1899667a3b1544ccb355fdfc4184d7d7"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "9b67aed49e0d4c2fb46ca9476a3b9243",
"url": "http://23.253.211.234:9292"
},
{
"enabled": true,
"id": "3b3611ea2e554ee7b85e7f2213b02c33",
"interface": "admin",
"links": {
"self": "http://example.com/identity/v3/endpoints/3b3611ea2e554ee7b85e7f2213b02c33"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "2a662f90700b4478929d4b24cc6a320b",
"url": "http://23.253.211.234:9696/"
},
{
"enabled": true,
"id": "3ea2b420306f48c6bf0cf51c2fefea03",
"interface": "internal",
"links": {
"self": "http://example.com/identity/v3/endpoints/3ea2b420306f48c6bf0cf51c2fefea03"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "736fb9bb21ef498287db9abcc55b20d9",
"url": "http://23.253.211.234:8774/v2/$(tenant_id)s"
},
{
"enabled": true,
"id": "41b122182f574a44b0e246aff6ca29c5",
"interface": "admin",
"links": {
"self": "http://example.com/identity/v3/endpoints/41b122182f574a44b0e246aff6ca29c5"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "9b67aed49e0d4c2fb46ca9476a3b9243",
"url": "http://23.253.211.234:9292"
},
{
"enabled": true,
"id": "44a736dd5eeb4347acec66b5f11c8f80",
"interface": "internal",
"links": {
"self": "http://example.com/identity/v3/endpoints/44a736dd5eeb4347acec66b5f11c8f80"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "2a662f90700b4478929d4b24cc6a320b",
"url": "http://23.253.211.234:9696/"
},
{
"enabled": true,
"id": "499e8f6718ef466ba3fb315fa8f9e0b8",
"interface": "internal",
"links": {
"self": "http://example.com/identity/v3/endpoints/499e8f6718ef466ba3fb315fa8f9e0b8"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "312f401c14d143d8b3e3f4daf0418add",
"url": "http://23.253.211.234:8774/v2.1/$(tenant_id)s"
},
{
"enabled": true,
"id": "545b1e9f126248428c5cdbec7420c353",
"interface": "public",
"links": {
"self": "http://example.com/identity/v3/endpoints/545b1e9f126248428c5cdbec7420c353"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "736fb9bb21ef498287db9abcc55b20d9",
"url": "http://23.253.211.234:8774/v2/$(tenant_id)s"
},
{
"enabled": true,
"id": "629dc5a64e954ad09a45e87bc48299ba",
"interface": "public",
"links": {
"self": "http://example.com/identity/v3/endpoints/629dc5a64e954ad09a45e87bc48299ba"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "2a662f90700b4478929d4b24cc6a320b",
"url": "http://23.253.211.234:9696/"
},
{
"enabled": true,
"id": "642a329a660544fdaab2420c0da7d49b",
"interface": "public",
"links": {
"self": "http://example.com/identity/v3/endpoints/642a329a660544fdaab2420c0da7d49b"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "ef6b15e425814dc69d830361baae0e33",
"url": "http://23.253.211.234:8080/v1/AUTH_$(tenant_id)s"
},
{
"enabled": true,
"id": "72f8fc8536e44a19bc3388218efcc741",
"interface": "internal",
"links": {
"self": "http://example.com/identity/v3/endpoints/72f8fc8536e44a19bc3388218efcc741"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "9b67aed49e0d4c2fb46ca9476a3b9243",
"url": "http://23.253.211.234:9292"
},
{
"enabled": true,
"id": "74121e71962e4947ac622c41706f0ee7",
"interface": "public",
"links": {
"self": "http://example.com/identity/v3/endpoints/74121e71962e4947ac622c41706f0ee7"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "17a877162c8e405b81d563d95ec4e3f8",
"url": "http://23.253.211.234:8776/v2/$(tenant_id)s"
},
{
"enabled": true,
"id": "7431a4f971dc4abb8d0e387434a06817",
"interface": "admin",
"links": {
"self": "http://example.com/identity/v3/endpoints/7431a4f971dc4abb8d0e387434a06817"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "9242e05f0c23467bbd1cf1f7a6e5e596",
"url": "http://23.253.211.234:8773/"
},
{
"enabled": true,
"id": "7cffc75a14ca4334b458e475750bd84f",
"interface": "public",
"links": {
"self": "http://example.com/identity/v3/endpoints/7cffc75a14ca4334b458e475750bd84f"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "efeb249cbcd3412496bc4b194ea058da",
"url": "http://example.com/identity/v2.0"
},
{
"enabled": true,
"id": "a422a6fa163b4a6ba8309e067ce3750b",
"interface": "public",
"links": {
"self": "http://example.com/identity/v3/endpoints/a422a6fa163b4a6ba8309e067ce3750b"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "312f401c14d143d8b3e3f4daf0418add",
"url": "http://23.253.211.234:8774/v2.1/$(tenant_id)s"
},
{
"enabled": true,
"id": "ac6a74efe9944afdb129d4df70cde0ec",
"interface": "public",
"links": {
"self": "http://example.com/identity/v3/endpoints/ac6a74efe9944afdb129d4df70cde0ec"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "9242e05f0c23467bbd1cf1f7a6e5e596",
"url": "http://23.253.211.234:8773/"
},
{
"enabled": true,
"id": "adf43d7ff0d14d0fa1e8a5187f40e1af",
"interface": "internal",
"links": {
"self": "http://example.com/identity/v3/endpoints/adf43d7ff0d14d0fa1e8a5187f40e1af"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "efeb249cbcd3412496bc4b194ea058da",
"url": "http://example.com/identity/v2.0"
},
{
"enabled": true,
"id": "b18be64a118244d39217db72534f8b33",
"interface": "admin",
"links": {
"self": "http://example.com/identity/v3/endpoints/b18be64a118244d39217db72534f8b33"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "736fb9bb21ef498287db9abcc55b20d9",
"url": "http://23.253.211.234:8774/v2/$(tenant_id)s"
},
{
"enabled": true,
"id": "c828983c9c214d819674649aa693cdff",
"interface": "public",
"links": {
"self": "http://example.com/identity/v3/endpoints/c828983c9c214d819674649aa693cdff"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "98cfd5347fb84601b2f88f3afd8dddd4",
"url": "http://23.253.211.234:8776/v1/$(tenant_id)s"
},
{
"enabled": true,
"id": "d062ebdb244f447498768fc0ced32e2d",
"interface": "admin",
"links": {
"self": "http://example.com/identity/v3/endpoints/d062ebdb244f447498768fc0ced32e2d"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "98cfd5347fb84601b2f88f3afd8dddd4",
"url": "http://23.253.211.234:8776/v1/$(tenant_id)s"
},
{
"enabled": true,
"id": "d281219ec0df4cf2b7c681463d5dcf51",
"interface": "internal",
"links": {
"self": "http://example.com/identity/v3/endpoints/d281219ec0df4cf2b7c681463d5dcf51"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "17a877162c8e405b81d563d95ec4e3f8",
"url": "http://23.253.211.234:8776/v2/$(tenant_id)s"
},
{
"enabled": true,
"id": "d8e0824a17404431b5d978a87ac1bede",
"interface": "admin",
"links": {
"self": "http://example.com/identity/v3/endpoints/d8e0824a17404431b5d978a87ac1bede"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "efeb249cbcd3412496bc4b194ea058da",
"url": "http://example.com/identity_v2_admin/v2.0"
},
{
"enabled": true,
"id": "d9b54bdc063046828ac3c6487bea8047",
"interface": "internal",
"links": {
"self": "http://example.com/identity/v3/endpoints/d9b54bdc063046828ac3c6487bea8047"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "9242e05f0c23467bbd1cf1f7a6e5e596",
"url": "http://23.253.211.234:8773/"
},
{
"enabled": true,
"id": "ea74f9771dec475eabfc2cdff5364413",
"interface": "admin",
"links": {
"self": "http://example.com/identity/v3/endpoints/ea74f9771dec475eabfc2cdff5364413"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "ef6b15e425814dc69d830361baae0e33",
"url": "http://23.253.211.234:8080"
}
],
"links": {
"next": null,
"previous": null,
"self": "http://example.com/identity/v3/endpoints"
}
}
创建端点。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/endpoints
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
endpoint |
body |
对象 |
“endpoint”对象。 |
url |
body |
字符串 |
端点 URL。 |
enabled(可选) |
body |
布尔值 |
定义端点是否出现在服务目录中:- |
接口 |
body |
字符串 |
接口类型,描述端点的可见性。值为:- |
service_id |
body |
字符串 |
服务所属的服务的 UUID。 |
region_id(可选) |
body |
字符串 |
(从 v3.2 开始)包含服务端点的区域的 ID。 |
name (可选) |
body |
字符串 |
(已弃用)端点名称。仅当资源上设置时,才会响应中返回该字段。 此字段已弃用,因为它没有价值。端点最好通过描述它们的组合服务、区域和接口或其 ID 来描述。 |
description (可选) |
body |
字符串 |
端点描述。仅在资源上设置时才返回。 |
示例¶
{
"endpoint": {
"interface": "public",
"region_id": "RegionOne",
"url": "http://example.com/identity/v3/endpoints/828384",
"service_id": "9242e05f0c23467bbd1cf1f7a6e5e596"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
endpoint |
body |
对象 |
“endpoint”对象。 |
links |
body |
对象 |
“endpoint”资源的链接。 |
url |
body |
字符串 |
端点 URL。 |
region |
body |
字符串 |
(在 v3.2 中已弃用)服务端点的地理位置。 |
enabled |
body |
布尔值 |
指示端点是否出现在服务目录中:- |
接口 |
body |
字符串 |
接口类型,描述端点的可见性。值为:- |
service_id |
body |
字符串 |
服务所属的服务的 UUID。 |
id |
body |
字符串 |
端点 ID。 |
name (可选) |
body |
字符串 |
(已弃用)端点名称。仅当资源上设置时,才会响应中返回该字段。 此字段已弃用,因为它没有价值。端点最好通过描述它们的组合服务、区域和接口或其 ID 来描述。 |
region_id |
body |
字符串 |
(从 v3.2 开始)包含服务端点的区域的 ID。 |
description (可选) |
body |
字符串 |
端点描述。仅在资源上设置时才返回。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
显示端点的详情。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/endpoints
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
endpoint_id |
路径 |
字符串 |
端点 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
endpoint |
body |
对象 |
“endpoint”对象。 |
name (可选) |
body |
字符串 |
(已弃用)端点名称。仅当资源上设置时,才会响应中返回该字段。 此字段已弃用,因为它没有价值。端点最好通过描述它们的组合服务、区域和接口或其 ID 来描述。 |
links |
body |
对象 |
“endpoint”资源的链接。 |
url |
body |
字符串 |
端点 URL。 |
region |
body |
字符串 |
(在 v3.2 中已弃用)服务端点的地理位置。 |
接口 |
body |
字符串 |
接口类型,描述端点的可见性。值为:- |
service_id |
body |
字符串 |
服务所属的服务的 UUID。 |
description (可选) |
body |
字符串 |
端点描述。仅在资源上设置时才返回。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"endpoint": {
"enabled": true,
"id": "01c3d5b92f7841ac83fb4b26173c12c7",
"interface": "admin",
"links": {
"self": "http://example.com/identity/v3/endpoints/01c3d5b92f7841ac83fb4b26173c12c7"
},
"region": "RegionOne",
"region_id": "RegionOne",
"service_id": "3b2d6ad7e02c4cde8498a547601f1b8f",
"url": "http://23.253.211.234:9696/"
}
}
更新端点。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/endpoint
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
endpoint |
body |
对象 |
“endpoint”对象。 |
url |
body |
字符串 |
端点 URL。 |
region |
body |
字符串 |
(在 v3.2 中已弃用)服务端点的地理位置。 |
接口 |
body |
字符串 |
接口类型,描述端点的可见性。值为:- |
service_id |
body |
字符串 |
服务所属的服务的 UUID。 |
endpoint_id |
路径 |
字符串 |
端点 ID。 |
name (可选) |
body |
字符串 |
(已弃用)端点名称。仅当资源上设置时,才会响应中返回该字段。 此字段已弃用,因为它没有价值。端点最好通过描述它们的组合服务、区域和接口或其 ID 来描述。 |
description (可选) |
body |
字符串 |
端点描述。仅在资源上设置时才返回。 |
示例¶
{
"endpoint": {
"interface": "public",
"region_id": "north",
"url": "http://example.com/identity/v3/endpoints/828384",
"service_id": "345678"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
endpoint |
body |
对象 |
“endpoint”对象。 |
id |
body |
字符串 |
端点 ID。 |
links |
body |
对象 |
“endpoint”资源的链接。 |
url |
body |
字符串 |
端点 URL。 |
region |
body |
字符串 |
(在 v3.2 中已弃用)服务端点的地理位置。 |
接口 |
body |
字符串 |
接口类型,描述端点的可见性。值为:- |
name (可选) |
body |
字符串 |
(已弃用)端点名称。仅当资源上设置时,才会响应中返回该字段。 此字段已弃用,因为它没有价值。端点最好通过描述它们的组合服务、区域和接口或其 ID 来描述。 |
service_id |
body |
字符串 |
服务所属的服务的 UUID。 |
description (可选) |
body |
字符串 |
端点描述。仅在资源上设置时才返回。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
示例¶
{
"endpoint": {
"id": "828384",
"interface": "internal",
"links": {
"self": "http://example.com/identity/v3/endpoints/828384"
},
"region_id": "north",
"service_id": "686766",
"url": "http://example.com/identity/v3/endpoints/828384"
}
}
删除端点。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/endpoint
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
endpoint_id |
路径 |
字符串 |
端点 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
统一限制¶
在 OpenStack 中,配额系统主要包含两部分:limit 和 usage。Keystone 中的统一限制是 limit 部分的替代品。它包含两种类型的资源:Registered Limit 和 Limit。一个 registered limit 是默认限制。它通常由注册到 Keystone 的服务创建。一个 limit 是覆盖每个项目的注册限制的限制。
列出注册限制。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/registered_limits
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
service_id(可选) |
查询 |
字符串 |
按服务 ID 过滤响应。 |
region_id(可选) |
查询 |
字符串 |
按区域 ID 过滤响应。 |
resource_name(可选) |
查询 |
字符串 |
按指定的资源名称过滤响应。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
links |
body |
对象 |
指向资源集合的链接。 |
registered_limits |
body |
数组 |
“registered_limits”对象列表 |
id |
body |
字符串 |
注册限制 ID。 |
service_id |
body |
字符串 |
注册限制所属服务的 UUID。 |
region_id |
body |
字符串 |
包含服务端点的区域的 ID。该值为 None 也可以。 |
resource_name |
body |
字符串 |
资源名称。 |
default_limit |
body |
整数 |
注册限制的默认限制。 |
description |
body |
字符串 |
注册限制描述。 |
links |
body |
对象 |
指向相关资源的链接。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
示例¶
{
"links": {
"self": "http://10.3.150.25/identity/v3/registered_limits",
"previous": null,
"next": null
},
"registered_limits": [
{
"resource_name": "snapshot",
"region_id": null,
"links": {
"self": "http://10.3.150.25/identity/v3/registered_limits/195acb8a093e43e9afb23d6628361e7c"
},
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"default_limit": 10,
"id": "195acb8a093e43e9afb23d6628361e7c",
"description": null
},
{
"resource_name": "volume",
"region_id": "RegionOne",
"links": {
"self": "http://10.3.150.25/identity/v3/registered_limits/ea7f74f15cba4c6db1406fe52532f98d"
},
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"default_limit": 5,
"id": "ea7f74f15cba4c6db1406fe52532f98d",
"description": "Number of volumes"
}
]
}
创建注册限制。它支持在一个请求中创建多个注册限制。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/registered_limits
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
registered_limits |
body |
数组 |
“registered_limits”对象列表 |
service_id |
body |
字符串 |
注册限制所属服务的 UUID。 |
region_id(可选) |
body |
字符串 |
包含服务端点的区域的 ID。 |
resource_name |
body |
字符串 |
资源名称。 |
default_limit |
body |
整数 |
注册限制的默认限制。 |
description (可选) |
body |
字符串 |
注册限制描述。 |
示例¶
{
"registered_limits":[
{
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"region_id": "RegionOne",
"resource_name": "snapshot",
"default_limit": 5
},
{
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"resource_name": "volume",
"default_limit": 10,
"description": "Number of volumes"
}
]
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
registered_limits |
body |
数组 |
“registered_limits”对象列表 |
id |
body |
字符串 |
注册限制 ID。 |
service_id |
body |
字符串 |
注册限制所属服务的 UUID。 |
region_id |
body |
字符串 |
包含服务端点的区域的 ID。该值为 None 也可以。 |
resource_name |
body |
字符串 |
资源名称。 |
default_limit |
body |
整数 |
注册限制的默认限制。 |
description |
body |
字符串 |
注册限制描述。 |
links |
body |
对象 |
指向相关资源的链接。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
示例¶
{
"registered_limits": [
{
"resource_name": "volume",
"region_id": null,
"links": {
"self": "http://10.3.150.25/identity/v3/registered_limits/773147dd53cd4a17b921d555cf17c633"
},
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"default_limit": 10,
"id": "773147dd53cd4a17b921d555cf17c633",
"description": "Number of volumes"
},
{
"resource_name": "snapshot",
"region_id": "RegionOne",
"links": {
"self": "http://10.3.150.25/identity/v3/registered_limits/e35a965b2b244209bb0c2b193c55955f"
},
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"default_limit": 5,
"id": "e35a965b2b244209bb0c2b193c55955f",
"description": null
}
]
}
更新指定的注册限制。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/registered_limit
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
registered_limit_id |
路径 |
字符串 |
注册限制 ID。 |
registered_limit |
body |
数组 |
一个 |
service_id(可选) |
body |
字符串 |
要更新的服务的 UUID,该注册限制属于该服务。service_id、resource_name 或 region_id 必须与现有值不同,否则将引发 409 错误。 |
region_id(可选) |
body |
字符串 |
包含服务端点的区域的 ID。service_id、resource_name 或 region_id 必须与现有值不同,否则将引发 409 错误。 |
resource_name(可选) |
body |
字符串 |
资源名称。service_id、resource_name 或 region_id 必须与现有值不同,否则将引发 409 错误。 |
default_limit (可选) |
body |
整数 |
注册限制的默认限制。 |
description (可选) |
body |
字符串 |
注册限制描述。 |
示例¶
{
"registered_limit": {
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"region_id": "RegionOne",
"resource_name": "snapshot",
"default_limit": 5,
"description": "Number of snapshots"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
registered_limit |
body |
数组 |
一个 |
id |
body |
字符串 |
注册限制 ID。 |
service_id |
body |
字符串 |
注册限制所属服务的 UUID。 |
region_id |
body |
字符串 |
包含服务端点的区域的 ID。该值为 None 也可以。 |
resource_name |
body |
字符串 |
资源名称。 |
default_limit |
body |
整数 |
注册限制的默认限制。 |
description |
body |
字符串 |
注册限制描述。 |
links |
body |
对象 |
指向相关资源的链接。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
示例¶
{
"registered_limit": {
"resource_name": "snapshot",
"region_id": "RegionOne",
"links": {
"self": "http://10.3.150.25/identity/v3/registered_limits/e35a965b2b244209bb0c2b193c55955f"
},
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"default_limit": 5,
"id": "e35a965b2b244209bb0c2b193c55955f",
"description": "Number of snapshots"
}
}
显示注册限制的详情。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/registered_limit
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
registered_limit_id |
路径 |
字符串 |
注册限制 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
registered_limit |
body |
数组 |
一个 |
id |
body |
字符串 |
注册限制 ID。 |
service_id |
body |
字符串 |
注册限制所属服务的 UUID。 |
region_id |
body |
字符串 |
包含服务端点的区域的 ID。该值为 None 也可以。 |
resource_name |
body |
字符串 |
资源名称。 |
default_limit |
body |
整数 |
注册限制的默认限制。 |
description |
body |
字符串 |
注册限制描述。 |
links |
body |
对象 |
指向相关资源的链接。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"registered_limit": {
"resource_name": "volume",
"region_id": null,
"links": {
"self": "http://10.3.150.25/identity/v3/registered_limits/773147dd53cd4a17b921d555cf17c633"
},
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"default_limit": 10,
"id": "773147dd53cd4a17b921d555cf17c633",
"description": "Number of volumes"
}
}
删除一个注册限制。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/registered_limit
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
registered_limit_id |
路径 |
字符串 |
注册限制 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
返回配置的限制执行模型。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/limit_model
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
model |
body |
对象 |
描述配置的执行模型的对象。 |
name |
body |
字符串 |
执行模型的名称 |
description |
body |
字符串 |
所用执行模型的简短描述 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
平面执行示例¶
{
"model": {
"description": "Limit enforcement and validation does not take project hierarchy into consideration.",
"name": "flat"
}
}
列出限制。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/limits
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
service_id(可选) |
查询 |
字符串 |
按服务 ID 过滤响应。 |
region_id(可选) |
查询 |
字符串 |
按区域 ID 过滤响应。 |
resource_name(可选) |
查询 |
字符串 |
按指定的资源名称过滤响应。 |
project_id (可选) |
查询 |
字符串 |
按项目 ID 过滤响应。 |
domain_id (可选) |
查询 |
字符串 |
按域 ID 过滤响应。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
links |
body |
对象 |
指向资源集合的链接。 |
limits |
body |
数组 |
一个 |
id |
body |
字符串 |
限制 ID。 |
project_id |
body |
字符串 |
项目的 ID。 |
domain_id |
body |
字符串 |
域的 ID。 |
service_id |
body |
字符串 |
限制所属服务的 UUID。 |
region_id |
body |
字符串 |
包含服务端点的区域的 ID。该值为 None 也可以。 |
resource_name |
body |
字符串 |
资源名称。 |
resource_limit |
body |
整数 |
覆盖限制。 |
description |
body |
字符串 |
限制描述。 |
links |
body |
对象 |
指向相关资源的链接。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
示例¶
{
"links": {
"self": "http://10.3.150.25/identity/v3/limits",
"previous": null,
"next": null
},
"limits": [
{
"resource_name": "volume",
"region_id": null,
"links": {
"self": "http://10.3.150.25/identity/v3/limits/25a04c7a065c430590881c646cdcdd58"
},
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"project_id": "3a705b9f56bb439381b43c4fe59dccce",
"domain_id": null,
"id": "25a04c7a065c430590881c646cdcdd58",
"resource_limit": 11,
"description": "Number of volumes for project 3a705b9f56bb439381b43c4fe59dccce"
},
{
"resource_name": "snapshot",
"region_id": "RegionOne",
"links": {
"self": "http://10.3.150.25/identity/v3/limits/3229b3849f584faea483d6851f7aab05"
},
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"project_id": "3a705b9f56bb439381b43c4fe59dccce",
"domain_id": null,
"id": "3229b3849f584faea483d6851f7aab05",
"resource_limit": 5,
"description": null
}
]
}
创建限制。支持在一个请求中创建多个限制。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/limits
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
limits |
body |
数组 |
一个 |
project_id (可选) |
body |
字符串 |
项目的 ID。 |
domain_id (可选) |
body |
字符串 |
域的名称。 |
service_id |
body |
字符串 |
限制所属服务的 UUID。 |
region_id(可选) |
body |
字符串 |
包含服务端点的区域的 ID。 |
resource_name |
body |
字符串 |
资源名称。 |
resource_limit |
body |
整数 |
覆盖限制。 |
description (可选) |
body |
字符串 |
限制描述。 |
示例¶
{
"limits":[
{
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"project_id": "3a705b9f56bb439381b43c4fe59dccce",
"region_id": "RegionOne",
"resource_name": "snapshot",
"resource_limit": 5
},
{
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"domain_id": "edbafc92be354ffa977c58aa79c7bdb2",
"resource_name": "volume",
"resource_limit": 10,
"description": "Number of volumes for project 3a705b9f56bb439381b43c4fe59dccce"
}
]
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
limits |
body |
数组 |
一个 |
id |
body |
字符串 |
限制 ID。 |
project_id |
body |
字符串 |
项目的 ID。 |
domain_id |
body |
字符串 |
域的 ID。 |
service_id |
body |
字符串 |
限制所属服务的 UUID。 |
region_id |
body |
字符串 |
包含服务端点的区域的 ID。该值为 None 也可以。 |
resource_name |
body |
字符串 |
资源名称。 |
resource_limit |
body |
整数 |
覆盖限制。 |
description |
body |
字符串 |
限制描述。 |
links |
body |
对象 |
指向相关资源的链接。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
示例¶
{
"limits": [
{
"resource_name": "volume",
"region_id": null,
"links": {
"self": "http://10.3.150.25/identity/v3/limits/25a04c7a065c430590881c646cdcdd58"
},
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"project_id": null,
"domain_id": "edbafc92be354ffa977c58aa79c7bdb2",
"id": "25a04c7a065c430590881c646cdcdd58",
"resource_limit": 10,
"description": "Number of volumes for project 3a705b9f56bb439381b43c4fe59dccce"
},
{
"resource_name": "snapshot",
"region_id": "RegionOne",
"links": {
"self": "http://10.3.150.25/identity/v3/limits/3229b3849f584faea483d6851f7aab05"
},
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"project_id": "3a705b9f56bb439381b43c4fe59dccce",
"domain_id": null,
"id": "3229b3849f584faea483d6851f7aab05",
"resource_limit": 5,
"description": null
}
]
}
更新指定的限制。仅支持更新限制的 resource_limit 或 description。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/limit
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
limit_id |
路径 |
字符串 |
限制 ID。 |
limit |
body |
数组 |
一个 |
resource_limit (可选) |
body |
整数 |
覆盖限制。 |
description (可选) |
body |
字符串 |
限制描述。 |
示例¶
{
"limit": {
"resource_limit": 5,
"description": "Number of snapshots for project 3a705b9f56bb439381b43c4fe59dccce"
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
limit |
body |
数组 |
一个 |
id |
body |
字符串 |
限制 ID。 |
project_id |
body |
字符串 |
项目的 ID。 |
domain_id |
body |
字符串 |
域的 ID。 |
service_id |
body |
字符串 |
限制所属服务的 UUID。 |
region_id |
body |
字符串 |
包含服务端点的区域的 ID。该值为 None 也可以。 |
resource_name |
body |
字符串 |
资源名称。 |
resource_limit |
body |
整数 |
覆盖限制。 |
description |
body |
字符串 |
限制描述。 |
links |
body |
对象 |
指向相关资源的链接。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
示例¶
{
"limit": {
"resource_name": "snapshot",
"region_id": "RegionOne",
"links": {
"self": "http://10.3.150.25/identity/v3/limits/3229b3849f584faea483d6851f7aab05"
},
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"project_id": "3a705b9f56bb439381b43c4fe59dccce",
"domain_id": null,
"id": "3229b3849f584faea483d6851f7aab05",
"resource_limit": 5,
"description": "Number of snapshots for project 3a705b9f56bb439381b43c4fe59dccce"
}
}
显示限制的详情。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/limit
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
limit_id |
路径 |
字符串 |
限制 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
limit |
body |
数组 |
一个 |
id |
body |
字符串 |
限制 ID。 |
project_id |
body |
字符串 |
项目的 ID。 |
domain_id |
body |
字符串 |
域的 ID。 |
service_id |
body |
字符串 |
限制所属服务的 UUID。 |
region_id |
body |
字符串 |
包含服务端点的区域的 ID。该值为 None 也可以。 |
resource_name |
body |
字符串 |
资源名称。 |
resource_limit |
body |
整数 |
覆盖限制。 |
description |
body |
字符串 |
限制描述。 |
links |
body |
对象 |
指向相关资源的链接。 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"limit": {
"resource_name": "volume",
"region_id": null,
"links": {
"self": "http://10.3.150.25/identity/v3/limits/25a04c7a065c430590881c646cdcdd58"
},
"service_id": "9408080f1970482aa0e38bc2d4ea34b7",
"project_id": "3a705b9f56bb439381b43c4fe59dccce",
"domain_id": null,
"id": "25a04c7a065c430590881c646cdcdd58",
"resource_limit": 11,
"description": null
}
}
删除一个限制。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/limit
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
limit_id |
路径 |
字符串 |
限制 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
用户¶
用户是拥有域的单个 API 消费者。角色将用户与项目或域明确关联。没有分配角色的用户无法访问 OpenStack 资源。
您可以列出、创建、显示用户详情、更新、删除和更改用户密码。
您还可以列出指定用户的组、项目和角色分配。要列出用户角色,请参阅 角色。
列出用户。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/users
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
domain_id (可选) |
查询 |
字符串 |
按域 ID 过滤响应。 |
enabled(可选) |
查询 |
字符串 |
按启用 ( |
idp_id (可选) |
查询 |
字符串 |
按身份提供商 ID 过滤响应。 |
name (可选) |
查询 |
字符串 |
按用户名过滤响应。 |
password_expires_at (可选) |
查询 |
字符串 |
根据用户密码是否过期过滤结果。查询应包含一个 password_expires_at={operator}:{timestamp}
例如 /v3/users?password_expires_at=lt:2016-12-08T22:02:00Z
例如,将返回密码在时间戳 ( |
protocol_id (可选) |
查询 |
字符串 |
按协议 ID 过滤响应。 |
unique_id (可选) |
查询 |
字符串 |
按唯一 ID 过滤响应。 |
limit (可选) |
查询 |
整数 |
请求项目大小。返回最多限制值数量的项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。 |
marker (可选) |
查询 |
字符串 |
最后一个项目看到的 ID。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值 |
sort_key (可选) |
查询 |
字符串 |
按属性对资源进行排序 |
sort_dir (可选) |
查询 |
字符串 |
排序方向。有效值为 asc(升序)或 desc(降序)。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
links |
body |
对象 |
指向资源集合的链接。 |
users |
body |
数组 |
一个 |
default_project_id (可选) |
body |
字符串 |
用户的默认项目 ID。 |
domain_id |
body |
字符串 |
域的 ID。 |
enabled |
body |
布尔值 |
如果用户已启用,则此值为 |
id |
body |
字符串 |
用户 ID。 |
links |
body |
对象 |
|
name |
body |
字符串 |
用户名。必须在拥有域内唯一。 |
password_expires_at |
body |
字符串 |
密码到期日期和时间。时区为 UTC。 这是一个响应对象属性;不适用于请求。 3.7 版本新增 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
示例¶
{
"links": {
"next": null,
"previous": null,
"self": "http://example.com/identity/v3/users"
},
"users": [
{
"domain_id": "default",
"enabled": true,
"id": "2844b2a08be147a08ef58317d6471f1f",
"links": {
"self": "http://example.com/identity/v3/users/2844b2a08be147a08ef58317d6471f1f"
},
"name": "glance",
"password_expires_at": null
},
{
"domain_id": "default",
"enabled": true,
"id": "4ab84ab39de54f4d96eaff8f2145a7cd",
"links": {
"self": "http://example.com/identity/v3/users/4ab84ab39de54f4d96eaff8f2145a7cd"
},
"name": "swiftusertest1",
"password_expires_at": "2016-11-06T15:32:17.000000"
},
{
"domain_id": "default",
"enabled": true,
"id": "56696a9a04864d63877a3d06a6f0b24b",
"links": {
"self": "http://example.com/identity/v3/users/56696a9a04864d63877a3d06a6f0b24b"
},
"name": "swift",
"password_expires_at": null
},
{
"domain_id": "default",
"enabled": true,
"id": "5acb638d15da44fc8de41b9a4bd41875",
"links": {
"self": "http://example.com/identity/v3/users/5acb638d15da44fc8de41b9a4bd41875"
},
"name": "alt_demo",
"password_expires_at": "2016-11-06T15:32:17.000000"
},
{
"domain_id": "default",
"enabled": true,
"id": "7596e862b1af473c8ed6ae99d35b51e3",
"links": {
"self": "http://example.com/identity/v3/users/7596e862b1af473c8ed6ae99d35b51e3"
},
"name": "demo",
"password_expires_at": "2016-11-06T15:32:17.000000"
},
{
"domain_id": "default",
"enabled": true,
"id": "802edb2141b44e77bbde241417450749",
"links": {
"self": "http://example.com/identity/v3/users/802edb2141b44e77bbde241417450749"
},
"name": "nova",
"password_expires_at": null
},
{
"domain_id": "592ab0800d3745baaf45c610fa41950a",
"enabled": true,
"id": "9aca3883784647fe9aff3a50d922489a",
"links": {
"self": "http://example.com/identity/v3/users/9aca3883784647fe9aff3a50d922489a"
},
"name": "swiftusertest4",
"password_expires_at": "2016-11-06T15:32:17.000000"
},
{
"domain_id": "default",
"enabled": true,
"id": "a1251b011f9345e68c2458b841152034",
"links": {
"self": "http://example.com/identity/v3/users/a1251b011f9345e68c2458b841152034"
},
"name": "swiftusertest3",
"password_expires_at": "2016-11-06T15:32:17.000000"
},
{
"domain_id": "default",
"enabled": true,
"id": "a43f46eb318041f6b712143862e3ad70",
"links": {
"self": "http://example.com/identity/v3/users/a43f46eb318041f6b712143862e3ad70"
},
"name": "neutron",
"password_expires_at": null
},
{
"domain_id": "default",
"enabled": true,
"id": "b964a9e51c0046a4a84d3f83a135a97c",
"links": {
"self": "http://example.com/identity/v3/users/b964a9e51c0046a4a84d3f83a135a97c"
},
"name": "admin",
"password_expires_at": null
},
{
"domain_id": "default",
"enabled": true,
"id": "dc87e591c0d247d5ac04e873bd8a1646",
"links": {
"self": "http://example.com/identity/v3/users/dc87e591c0d247d5ac04e873bd8a1646"
},
"name": "cinder",
"password_expires_at": null
},
{
"domain_id": "default",
"enabled": true,
"id": "ed214dc1c2c6468b926c96eca6c8aee9",
"links": {
"self": "http://example.com/identity/v3/users/ed214dc1c2c6468b926c96eca6c8aee9"
},
"name": "glance-swift",
"password_expires_at": "2016-11-06T15:32:17.000000"
},
{
"domain_id": "default",
"enabled": true,
"id": "f4f6587b058a4f46a00242549b430d37",
"links": {
"self": "http://example.com/identity/v3/users/f4f6587b058a4f46a00242549b430d37"
},
"name": "swiftusertest2",
"password_expires_at": "2016-11-06T15:32:17.000000"
}
]
}
创建用户。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/users
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user |
body |
对象 |
一个 |
default_project_id (可选) |
body |
字符串 |
用户的默认项目 ID。用户的默认项目不能是域。设置此属性不会授予项目上的任何实际授权,并且仅为方便起见提供。因此,引用的项目不需要存在于用户域内。(自 v3.1 起)如果用户没有对其默认项目的授权,则在创建令牌时会忽略默认项目。(自 v3.1 起)此外,如果您的默认项目无效,则会颁发一个没有明确授权范围的令牌。 |
domain_id (可选) |
body |
字符串 |
用户的域 ID。如果请求中未提供域 ID,则 Identity 服务将尝试从请求中使用的令牌中提取域 ID。这需要使用域范围的令牌。 |
federated (可选) |
body |
列表 |
与用户关联的联合对象列表。列表中的每个对象都包含 "federated": [
{
"idp_id": "efbab5a6acad4d108fec6c63d9609d83",
"protocols": [
{"protocol_id": mapped, "unique_id": "test@example.com"}
]
}
]
|
enabled(可选) |
body |
布尔值 |
如果用户已启用,则此值为 |
name |
body |
字符串 |
用户名。必须在拥有域内唯一。 |
密码 (可选) |
body |
字符串 |
用户的密码。 |
extra (可选) |
body |
字符串 |
资源的额外属性。实际名称 |
options (可选) |
body |
对象 |
用户的资源选项。可用的资源选项是 |
示例¶
{
"user": {
"default_project_id": "263fd9",
"domain_id": "1789d1",
"enabled": true,
"federated": [
{
"idp_id": "efbab5a6acad4d108fec6c63d9609d83",
"protocols": [
{
"protocol_id": "mapped",
"unique_id": "test@example.com"
}
]
}
],
"name": "James Doe",
"password": "secretsecret",
"description": "James Doe user",
"email": "jdoe@example.com",
"options": {
"ignore_password_expiry": true
}
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user |
body |
对象 |
一个 |
default_project_id (可选) |
body |
字符串 |
用户的默认项目 ID。 |
domain_id |
body |
字符串 |
域的 ID。 |
enabled |
body |
布尔值 |
如果用户已启用,则此值为 |
federated (可选) |
body |
列表 |
与用户关联的联合对象列表。列表中的每个对象都包含 "federated": [
{
"idp_id": "efbab5a6acad4d108fec6c63d9609d83",
"protocols": [
{"protocol_id": "mapped", "unique_id": "test@example.com"}
]
}
]
|
id |
body |
字符串 |
用户 ID。 |
links |
body |
对象 |
|
name |
body |
字符串 |
用户名。必须在拥有域内唯一。 |
password_expires_at |
body |
字符串 |
密码到期日期和时间。时区为 UTC。 这是一个响应对象属性;不适用于请求。 3.7 版本新增 |
选项 |
body |
对象 |
用户的资源选项。可用的资源选项是 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
示例¶
{
"user": {
"default_project_id": "263fd9",
"description": "James Doe user",
"domain_id": "1789d1",
"email": "jdoe@example.com",
"enabled": true,
"federated": [
{
"idp_id": "efbab5a6acad4d108fec6c63d9609d83",
"protocols": [
{
"protocol_id": "mapped",
"unique_id": "test@example.com"
}
]
}
],
"id": "ff4e51",
"links": {
"self": "https://example.com/identity/v3/users/ff4e51"
},
"name": "James Doe",
"options": {
"ignore_password_expiry": true
},
"password_expires_at": "2016-11-06T15:32:17.000000"
}
}
显示用户的详情。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/user
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
用户 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user |
body |
对象 |
一个 |
default_project_id (可选) |
body |
字符串 |
用户的默认项目 ID。 |
domain_id |
body |
字符串 |
域的 ID。 |
enabled |
body |
布尔值 |
如果用户已启用,则此值为 |
federated (可选) |
body |
列表 |
与用户关联的联合对象列表。列表中的每个对象都包含 "federated": [
{
"idp_id": "efbab5a6acad4d108fec6c63d9609d83",
"protocols": [
{"protocol_id": "mapped", "unique_id": "test@example.com"}
]
}
]
|
id |
body |
字符串 |
用户 ID。 |
links |
body |
对象 |
|
name |
body |
字符串 |
用户名。必须在拥有域内唯一。 |
password_expires_at |
body |
字符串 |
密码到期日期和时间。时区为 UTC。 这是一个响应对象属性;不适用于请求。 3.7 版本新增 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"user": {
"default_project_id": "263fd9",
"domain_id": "1789d1",
"enabled": true,
"federated": [],
"id": "9fe1d3",
"links": {
"self": "https://example.com/identity/v3/users/9fe1d3"
},
"name": "jsmith",
"password_expires_at": "2016-11-06T15:32:17.000000"
}
}
更新用户。
如果后端驱动程序不支持此功能,则此调用可能会返回 HTTP Not Implemented (501) 响应代码。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/user
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
用户 ID。 |
user |
body |
对象 |
一个 |
default_project_id (可选) |
body |
字符串 |
用户的新的默认项目 ID。 |
domain_id (可选) |
body |
字符串 |
用户的新的域 ID。更改用户的域的功能现已弃用,将在后续版本中删除。它在大多数 Identity 服务实现中默认情况下已禁用。 |
enabled(可选) |
body |
布尔值 |
启用或禁用用户。启用用户可以进行身份验证并接收授权。禁用用户无法进行身份验证或接收授权。此外,用户持有的所有令牌都将失效。如果您重新启用此用户,预先存在的令牌将不会再次有效。要启用用户,请设置为 |
federated (可选) |
body |
列表 |
与用户关联的联合对象列表。列表中的每个对象都包含 "federated": [
{
"idp_id": "efbab5a6acad4d108fec6c63d9609d83",
"protocols": [
{"protocol_id": mapped, "unique_id": "test@example.com"}
]
}
]
|
name (可选) |
body |
字符串 |
用户的新的名称。必须在所属域内唯一。 |
密码 (可选) |
body |
字符串 |
用户的新的密码。 |
options (可选) |
body |
对象 |
用户的资源选项。可用的资源选项是 |
示例¶
{
"user": {
"default_project_id": "263fd9",
"enabled": true,
"options": {
"ignore_lockout_failure_attempts": true
}
}
}
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user |
body |
对象 |
一个 |
default_project_id (可选) |
body |
字符串 |
用户的默认项目 ID。 |
domain_id |
body |
字符串 |
域的 ID。 |
enabled |
body |
布尔值 |
如果用户已启用,则此值为 |
federated (可选) |
body |
列表 |
与用户关联的联合对象列表。列表中的每个对象都包含 "federated": [
{
"idp_id": "efbab5a6acad4d108fec6c63d9609d83",
"protocols": [
{"protocol_id": "mapped", "unique_id": "test@example.com"}
]
}
]
|
id |
body |
字符串 |
用户 ID。 |
links |
body |
对象 |
|
name |
body |
字符串 |
用户名。必须在拥有域内唯一。 |
password_expires_at |
body |
字符串 |
密码到期日期和时间。时区为 UTC。 这是一个响应对象属性;不适用于请求。 3.7 版本新增 |
选项 |
body |
对象 |
用户的资源选项。可用的资源选项是 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
501 - 未实现 |
服务器无法识别请求方法,或者缺乏满足请求的能力。 |
示例¶
{
"user": {
"default_project_id": "263fd9",
"domain_id": "1789d1",
"enabled": true,
"federated": [],
"id": "ff4e51",
"links": {
"self": "https://example.com/identity/v3/users/ff4e51"
},
"name": "jamesdoe",
"options": {
"ignore_lockout_failure_attempts": true
},
"password_expires_at": "2016-11-06T15:32:17.000000"
}
}
删除一个用户。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/user
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
用户 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
列出用户所属的组。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/user_groups
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
用户 ID。 |
响应¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
links |
body |
对象 |
指向资源集合的链接。 |
groups |
body |
数组 |
一个 |
description |
body |
字符串 |
组的描述。 |
domain_id |
body |
字符串 |
组的域 ID。 |
id |
body |
字符串 |
组的 ID。 |
links |
body |
对象 |
指向相关资源的链接。 |
name |
body |
字符串 |
组的名称。 |
membership_expires_at |
body |
字符串 |
组会员资格到期日期和时间。 新增于版本 3.14 |
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"groups": [
{
"description": "Developers cleared for work on all general projects",
"domain_id": "1789d1",
"id": "ea167b",
"links": {
"self": "https://example.com/identity/v3/groups/ea167b"
},
"membership_expires_at": null,
"name": "Developers"
},
{
"description": "Developers cleared for work on secret projects",
"domain_id": "1789d1",
"id": "a62db1",
"links": {
"self": "https://example.com/identity/v3/groups/a62db1"
},
"membership_expires_at": "2016-11-06T15:32:17.000000",
"name": "Secure Developers"
}
],
"links": {
"self": "http://example.com/identity/v3/users/9fe1d3/groups",
"previous": null,
"next": null
}
}
列出用户有权访问的项目。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/user_projects
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
用户 ID。 |
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
示例¶
{
"projects": [
{
"description": "description of this project",
"domain_id": "161718",
"enabled": true,
"id": "456788",
"links": {
"self": "http://example.com/identity/v3/projects/456788"
},
"name": "a project name",
"parent_id": "212223"
},
{
"description": "description of this project",
"domain_id": "161718",
"enabled": true,
"id": "456789",
"links": {
"self": "http://example.com/identity/v3/projects/456789"
},
"name": "another domain",
"parent_id": "212223"
}
],
"links": {
"self": "http://example.com/identity/v3/users/313233/projects",
"previous": null,
"next": null
}
}
更改用户的密码。
注意
此 API 调用不需要令牌进行身份验证。
关系:https://docs.openstack.org/api/openstack-identity/3/rel/user_change_password
请求¶
参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
user_id |
路径 |
字符串 |
用户 ID。 |
user |
body |
对象 |
一个 |
original_password |
body |
字符串 |
用户的原始密码。 |
password |
body |
字符串 |
用户的新的密码。 |
示例¶
{
"user": {
"password": "new_secretsecret",
"original_password": "secretsecret"
}
}
响应¶
状态码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已完成请求。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |