我正在配置 Glance 以针对 Keystone 进行身份验证。它可以工作,但我不确定某些身份验证选项究竟如何交互。
我开始配置 Glance文档,但实际上并没有记录任何这些选项。我发现
身份验证文档,其中讨论了其中一些,但实际上并没有记录auth_uri
。
这示例 Glance 配置在里面OpenStack 安装和部署手册看起来像这样:
[filter:authtoken]
paste.filter_factory = keystone.middleware.auth_token:filter_factory
service_protocol = http
service_host = 127.0.0.1
service_port = 5000
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
auth_uri = http://127.0.0.1:5000/
admin_token = 012345SECRET99TOKEN012345
这身份验证文档说:
以 auth_ 开头的变量指向 Keystone Admin 服务。中间件会使用此信息向 Keystone 实际查询身份验证令牌的有效性。
好的。那么如何auth_uri
与auth_host
、auth_port
和交互auth_protocol
?可以简单地提供auth_uri
并丢弃其他选项吗?是否有相应的service_uri
配置选项?为什么端口auth_uri
对应于service_port
上述配置中的而不是auth_port
?
Keystone 将端口称为35357
“管理”端口,在我看来,这仅用于管理 Keystone(创建/删除服务、租户等)。而 Glance 将其称为“身份验证”端口,这表明用途不同。端口 35357 上的服务到底提供了什么,而端口 5000 上的服务没有提供?
答案1
首先检查: http://docs.openstack.org/ops/OpenStackOperationsGuide.pdf
查看 Glance 源代码...
tools/migrate_image_owners.py
...是唯一引用 auth_uri 的文件。
看来这个变量无处不在,它有助于客户端和整个 openstack 中的身份验证令牌处理。它不是专门由 Glance 使用的……但它是由与中间件堆栈配合使用的实用程序使用的。
至于 keystone 上的 5000 和 35357 之间的区别......
http://docs.openstack.org/developer/keystone/api_curl_examples.html 对哪些 API 示例对两者有效,或无效进行了非常明确的讨论。
我对端口 5000 的理解是,它的具体用途是允许对 keystone 进行公共 API 身份验证,因此您不需要公开 35357 只是为了允许人们对其进行身份验证。
至于为什么每个与 keystone 相关的 openstack 组件里面都有 auth creds……说实话我不知道。
然而我应该指出 API v2 即将推出。尚未完全记录,它将开始对 keystone 的运行方式进行一些根本性的改变。