【问题标题】:OpenStack API V2 tenants returns only one tenantOpenStack API V2 租户只返回一个租户
【发布时间】:2015-12-23 15:32:15
【问题描述】:

我正在尝试使用 OpenStack 的身份 (Keystone) API V2 获取租户列表。

在我以用户“admin”身份在公共端口 (5000) 上进行身份验证后。 我可以使用从身份验证中获得的令牌在端口 5000 上对身份 API 进行 /v2.0/tenants 调用。但是,它只返回一个结果,而有多个租户。

我尝试了很多方法来克服这个问题:

  • 使用端口 35357 - /tenants 调用返回 401 未授权
  • 使用管理员令牌尝试端口 7777 - 得到 401
    • 来自 PostMan Chrome 扩展程序的相同调用确实有效
  • 尝试重复建议 in this thread - 我的租户名称身份验证调用在请求格式上失败,我找不到任何示例来说明此类请求的外观

一些观察:

  • 我在多个项目中将用户“admin”添加为管理员
  • 身份验证响应:
    • 没有显示用户 admin 的角色
    • 元数据显示 is_admin=0
    • serviceCatalog 显示为空

任何帮助将不胜感激

亚纶

【问题讨论】:

    标签: api authentication openstack


    【解决方案1】:

    /tenants API 返回您的用户有权访问的租户列表。管理员用户不会自动访问所有租户 - 但是它有权将用户分配给任何租户。因此,再次检查您的用户是否真的拥有所有这些租户的权限。

    如果您有权访问 Openstack Horizo​​n 仪表板,请使用您的用户登录并查看您可以选择的租户列表(通常作为屏幕左上角的选择框提供 - 取决于您的 openstack 发行版)

    我建议您使用带有 --debug 选项的 Openstack CLI - 使用 cli 列出您有权访问的租户。调试标志会将 Openstack API 调用输出到控制台屏幕。

    【讨论】:

    • 嗨巴拉克,感谢您的回答。正如我所说,我确实在多个项目中将用户“admin”添加为管理员。当我在控制器主机上使用带有调试输出的 CLI 时,它确实返回了完整列表,但我注意到,在它对端口 5000 进行身份验证后,租户会调用端口 35357。当我尝试复制此行为时,我得到了一个401返回码。
    • 我想我遗漏了一个关键细节:我需要从另一台主机进行 API 调用。查看从“keystone 端点列表”获得的端点列表,我发现身份服务的管理 URL 只能从 192.168.0.2:35357 访问。我想知道这是否解释了为什么我没有获得管理员权限并且总是在 /tenants 响应中获得一个租户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 2020-11-27
    • 2018-01-07
    • 2018-05-07
    • 1970-01-01
    • 2013-11-23
    相关资源
    最近更新 更多