对此进行了搜索并找到了:
Keystone returning token with metadata is_admin = 0
并没有真正回答这个问题,而且已经有一年了,所以我想我会开一个新的。
我正在运行Ubuntu 14.04的虚拟机实例,运行最新版本的devstack(就像在不到几周的时间里一样),我发现我看到了来自keystone的奇怪行为。
我理解管理员角色应该是特定于租户的,但我的观察与此相矛盾。
1)Keystone NEVER返回is_admin = 1。向管理员租户进行身份验证,管理员用户具有管理员租户STILL的管理员角色,返回“is_admin 0”。是否可以保证admin角色始终命名为“admin”?如果是这样,您可以使用.user.roles.name = admin进行检查吗?
2)如果这是真的,我仍然需要在进行身份验证时提供租户,以便在响应中填充该数组。为什么这很重要?好吧,我想在没有租户的情况下进行身份验证,获取租户和角色列表,然后对特定租户重新进行身份验证以执行有用的操作。为什么?因为我不想提前知道我的租户和角色列表。我想编写一个允许登录和验证的自动化流程,显示租户列表和其他功能,IF,并且仅在用户是管理员时才显示。
3)令人沮丧,这是#2的延续。如果管理员角色是真正特定于租户的,那么当我甚至不是租户B的成员时,使用租户A登录不应该允许我在租户B上执行管理工作,而且肯定会这样做。这将使我相信管理角色是全球性的,期间。这对我来说更有意义,我认为有租户特定的管理员,可以访问一组租户的管理员,以及全球管理员,但要么情况并非如此,他们说谎或者我只是完全被困Openstack身份。
由于所有互联网搜索都已经出现,或者似乎认为读者已经知道了他们想要解决的问题的背景和答案,有人可以向我解释:
A)管理角色的官方目的/限制是什么?
B)为什么地球上没有我的第一点工作?
C)为什么管理员角色似乎是全球性的?
D)在哪里有关于此的文档,并不假设您已经知道keystone的私密细节?例如,管理员角色是等等等等。你在这里配置它的访问等等等等。它的运作方式如下:等等等等。没有参考或假设任何先前的Openstack暴露在一个地方?
E)我问得太多了吗? :)
感谢。