gpt4 book ai didi

python - openstack 无法从 API 检索身份验证 token

转载 作者:太空宇宙 更新时间:2023-11-03 15:43:59 24 4
gpt4 key购买 nike

我正在尝试使用来自 python 的请求库从 API 检索身份验证 token 。这是我到目前为止所做的尝试:

def get_token():
data = {
"auth" : {
"identity" : {
"methods" : [ "password" ],
"password": {
"user" : {
"name" : OS_USERNAME,
"domain": { "name": "Default" },
"password": OS_PASSWORD
}
}
}
}
}

r = requests.post(
OS_AUTH_URL+'/auth/tokens',
headers = HEADERS,
json = data, # https://stackoverflow.com/questions/9733638
verify = False
)
print(r.content)
j = json.loads(r.content)
return j['token']['user']['id']

我在响应中得到 token :

{
"token": {
"issued_at": "2018-07-03T11:03:59.000000Z",
"audit_ids": [
"Fg1ywtZBQ1CkigCw70If9g"
],
"methods": [
"password"
],
"expires_at": "2018-07-03T12:03:59.000000Z",
"user": {
"password_expires_at": null,
"domain": {
"id": "default",
"name": "Default"
},
"id": "e0dc5beb383a46b98dad824c5d76e719",
"name": "admin"
}
}
}

但是,当我重新使用此 token 来获取例如项目列表时:

def get_tenantID():
r = requests.get(
OS_AUTH_URL+'/auth/projects',
headers = HEADERS,
verify = False
)
return r
r = get_token()
HEADERS['X-Auth-Project-Id'] = 'admin'
HEADERS['X-Auth-Token'] = r
r = get_tenantID()

我收到此错误,就好像我未通过身份验证一样:

<Response [401]>
{"error": {"message": "The request you have made requires authentication.", "code": 401, "title": "Unauthorized"}}

谷歌搜索并使用 openstack token issue 命令告诉我,通常情况下, token 更像是:

 gAAAAABaCo1F1CIMVlsTBeuqYH8tm2qR29tbkmUL4vZuhCNPXJI39TQ2YzL6Twoj8fNcAyLe3WhCYW2O1YpbBF0G8mo4bt7Kf0IRsoDOoJ6uWa3RYyJ5SQNoB_5n8EnVXbKPxFYOZ_iFBnaVtL1_XDrGbwsrlDeyy8lZTDdLsqY52pUhFR-7Uow

这不是我用 get_token 得到的。

我做错了什么?

非常感谢!

最佳答案

当您直接使用 auth API 时,颁发的 token 位于 X-Subject-Token header 中。

因此,要在您的 Python 示例中进行检索,您可以像这样访问 response.headers 字典:

token = r.headers['X-Subject-Token']

有关身份验证的更多信息,请参阅 Keystone v3 docs

关于python - openstack 无法从 API 检索身份验证 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51153144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com