Openstack API身份验证

Openstack API身份验证,openstack,devstack,Openstack,Devstack,这里是Openstack noob。我已经用DevStack安装了一个ubuntuvm,并且正在尝试使用Keystone进行身份验证,以获得一个令牌,用于后续的Openstack API调用。Horizon中“API访问”页面上显示的标识端点为:http:///identity 当我将下面的JSON有效负载发布到此端点时,我得到了一个错误get\u version\u v3()得到了一个意外的关键字参数“auth” { "auth": { "identity": {

这里是Openstack noob。我已经用DevStack安装了一个ubuntuvm,并且正在尝试使用Keystone进行身份验证,以获得一个令牌,用于后续的Openstack API调用。Horizon中“API访问”页面上显示的标识端点为:
http:///identity

当我将下面的JSON有效负载发布到此端点时,我得到了一个错误
get\u version\u v3()得到了一个意外的关键字参数“auth”

{
    "auth": {
        "identity": {
            "methods": [
                "password"
            ],
            "password": {
                "user": {
                    "name": "admin",
                    "domain": {
                        "name": "Default"
                    },
                    "password": “AdminPassword”
                }
            }
        }
    }
}
基于Openstack,我应该点击
http:///v3/auth/tokens
获取令牌,但当我点击该端点时,我得到了
404未找到

我目前正在使用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\u AUTH\u URL
应该是
http://:5000/V3
,因为keystone使用端口5000作为默认值

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

以防您没有安装客户端库:
pip install python keysteneclient

这里有一个好的文档供您阅读:


HTH

安装Devstack后,您应该会看到一个文件(openrc)。您必须获取文件源并运行OpenStack命令。我是否以“stack”用户的身份获取文件源?在此之后,我应该运行哪些openstack命令?我刚刚在devstack VM上执行了
telnet localhost 5000
,并且没有任何内容正在侦听此端口。可能Keystone服务没有运行?有什么方法可以检查吗?如果你使用的是Ubuntu,它应该在默认情况下运行。尝试
service keystone status
ps-ef | grep keystone
查看它是否正在运行。可能devstack安装不正确。您可以通过仪表板登录吗?它似乎正在运行。我看到一个主进程和两个工作进程正在运行。我可以登录到仪表板,创建实例、网络和卷而不会出现问题。是的,如果您能够登录到仪表板,这意味着您的keystone服务已启动并正在运行。Keystone团队正在努力将auth_url更改为
/identity
,但同时我相信,使用
5000
应该可以在
v3
中使用,而且它对我有效(刚刚尝试过)。另一种可能是您的Devstack托管在专用网络上。在配置devstack时,我在
local.conf
中添加了
HOST\u IP
,这样我就可以拥有keystone、nova等的公共服务端点。