Openstack API 身份验证

Openstack API Authentication

这里是 Openstack 菜鸟。我已经使用 DevStack 设置了一个 Ubuntu 虚拟机,并且正在尝试使用 Keystone 进行身份验证以获得用于后续 Openstack API 调用的令牌。 Horizo​​n 中“API 访问”页面上显示的身份端点是:http://<DEVSTACK_IP>/identity

当我 post 将下面的 JSON 负载发送到此端点时,我收到错误 get_version_v3() got an unexpected keyword argument 'auth’

{
    "auth": {
        "identity": {
            "methods": [
                "password"
            ],
            "password": {
                "user": {
                    "name": "admin",
                    "domain": {
                        "name": "Default"
                    },
                    "password": “AdminPassword”
                }
            }
        }
    }
}

基于 Openstack docs,我应该点击 http://<DEVSTACK_IP>/v3/auth/tokens 来获取令牌,但是当我点击那个端点时,我得到 404 Not Found.

我目前正在使用 Postman 对此进行测试,但最终会以编程方式进行。

是否有人有针对 Openstack API 进行身份验证的经验可以提供帮助?

不确定您是否想以 python 方式进行操作,但如果您这样做,可以使用以下方法:

from keystoneauth1.identity import v3
from keystoneauth1 import session

v3_auth = v3.Password(auth_url=V3_AUTH_URL,
                      username=USERNAME,
                      password=PASSWORD,
                      project_name=PROJECT_NAME,
                      project_domain_name="default",
                      user_domain_name="default")

v3_ses = session.Session(auth=v3_auth)
auth_token = v3_ses.get_token()

V3_AUTH_URL 应该是 http://<DEVSTACK_IP>:5000/v3 因为 keystone 默认使用端口 5000。

如果你有一个多域的devstack,你可以改变域,否则,它们应该是default

以防万一您没有安装客户端库:pip install python-keystoneclient

这是一个很好的文档供您阅读: https://docs.openstack.org/keystoneauth/latest/using-sessions.html

HTH