1

我使用这个外壳:

(1)curl -X POST http://localhost:5000/v2.0/tokens -d '{"auth":{"passwordCredentials":{"username": "changzhi", "password":"dddddd"}}}' -H "Content-type: application/json"

在 http.log 我找到一个实例:

(2)url -i -X GET http://10.0.3.139:35357/v3/projects -H "User-Agent: python-keystoneclient" -H "Forwarded: for=10.0.3.139;by=python-keystoneclient" -H "X-Auth-Token: 04ef789a010c6f252a9f572347cac345

问:在(1)中,我可以得到一个长的 json 字符串。它包括 token.id 。但我不知道 (2) 中的 X-auth-token 和 token.id 有什么区别。有人能告诉我区别吗?谢谢!

4

2 回答 2

3

由于第一个查询是针对端口 5000 的端点,因此它正在返回一个用户令牌。

第二个查询针对端口 35357 的端点,通常设置为 Keystone 的管理端点。因此,该令牌将有所不同,而且该调用针对的是 /projects 而不是 /tokens。

您可以将 X-auth-token 作为后续 http 请求的标头传递,但要意识到管理员令牌和用户令牌提供对资源的不同访问权限。

于 2013-11-22T15:23:53.377 回答
0

Keystone 服务由 2 个端点提供,一个具有端口 5000,另一个是 35357。35357 端口提供与管理相关的操作,而端口 5000 提供通用 API 功能。

令牌可以是有范围的(针对特定项目/域)或无范围的(仅使用用户名/密码生成)。当您使用 v2 api 请求令牌时,您会在响应中收到 tokenId,而在 v3 api 中,tokenId 在 key 的响应标头中:X-Subject-Token。

您需要在每个 API 请求中提供 X-Auth-Token 。您还可以在 X-Auth-Token 标头中使用超级用户。keystone.conf 中存在超级用户令牌(admin_token 键)

于 2014-07-22T17:23:53.110 回答