我使用这个shell:
(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之间的区别。有人能告诉我区别吗?谢谢!
答案 0 :(得分:3)
由于第一个查询针对端口5000的端点,因此它正在回送用户令牌。
第二个查询针对端口35357的端点,通常设置为Keystone的管理端点。因此,令牌将是不同的,加上调用是针对/ projects not / tokens。
您可以将X-auth-token作为后续http请求的标头传递,但要意识到管理令牌和用户令牌可以提供不同的资源访问权限。
答案 1 :(得分:0)
Keystone服务由2个端点提供,一个端口为5000,另一个端口为35357。 35357端口提供管理相关操作,而端口5000提供通用API功能。
标记可以是Scoped(对于特定的Project / Domain)或Unscoped(仅使用用户名/密码生成)。 当您使用v2 api请求令牌时,您在响应中接收tokenId,而在v3 api中,tokenId位于键的响应头中:X-Subject-Token。
您需要在每个API请求中提供X-Auth-Token。您还可以在X-Auth-Token标头中使用超级用户。 keystone.conf(admin_token key)
中存在超级用户令牌