5

我想使用 Horizo​​n 从 keystone 获取身份验证令牌,然后想将该身份验证令牌传递给我的支持代码。

我不知道如何得到这个,请帮助我。

我阅读了许多文章和博客博客,但我无法找到答案。请指出我正确的方向。

4

6 回答 6

7

最简单的方法是使用 Rest 客户端登录并从响应中获取令牌。我喜欢 Firefox RESTClient 插件,但你可以使用任何你想要的客户端。

  • 向 Openstack Identity URL 发送请求:

    POST keystone_ip:port/version/tokens
    

    (例如127.0.0.1:5000/v2.0/tokens

    带标题:

    Content-Type: application/json
    

    与身体:

    {
        "auth": {
            "tenantName": "enter_your_tenantname",
            "passwordCredentials": {
                "username": "enter_your_username",
                "password": "enter_your_password"
            }
        }
    }
    

    注意:如果您不确定正确的身份(keystone)URL 是什么,您可以手动登录到 Horizo​​n 并查找 API 端点列表。

  • 响应正文将包括以下内容:

    {
        "token": {
            "issued_at": "2014-02-25T08:34:56.068363",
            "expires": "2014-02-26T08:34:55Z",
            "id": "529e3a0e1c375j498315c71d08134837"
        }
    }
    
  • 在新的休息调用中使用返回的令牌 ID 作为标头。例如,要获取服务器列表,请使用 request:

    GET compute_endpoint_ip:port/v2/tenant_id/servers
    

    带标题:

    X-Auth-Token: 529e3a0e1c375j498315c71d08134837
    Content-Type: application/json
    
于 2014-02-25T09:10:38.213 回答
2

您可以使用python-keystoneclient。要对用户进行身份验证,请使用例如

 username='admin'
 password='1234'
 tenant_name='admin'
 auth_url='http://127.0.0.1:5000/v2.0'
 keystone = client.Client(username=username, password=password, tenant_name=tenant_name, auth_url=auth_url)

一旦用户通过身份验证,就会生成一个令牌。客户端上的 auth_ref 属性(本例中的 keystone 变量)将为您提供一个类似字典的结构,其中包含您需要的有关令牌的所有信息,这将使您能够重新使用令牌或将其传递到您的后端案子。

token_dict = keystone.auth_ref

现在,token_dict 是您可以传递给后端的变量。

于 2014-03-09T03:12:50.493 回答
2

作为如何获取它的示例:

import keystoneclient.v2_0.client as ksclient
# authenticate with keystone to get a token

keystone = ksclient.Client(auth_url="http://192.168.10.5:35357/v2.0",
                           username="admin",
                           password="admin",
                           tenant_name="admin")


token = keystone.auth_ref['token']['id']

# use this token for whatever other services you are accessing.
print token
于 2014-08-06T12:15:36.340 回答
1

转到已安装 Keystone 服务的节点。打开 vi /etc/keystone/keystone.conf

检查以 admin_token 开头的第三行。它应该是一个很长的随机字符串:

admin_token = 05131394ad6b49c56f217

那是您的基石令牌。使用蟒蛇:

>>> from keystoneclient.v2_0.client as ksclient
>>> keystone = ksclient.Client(auth_url="http://service-stack.linxsol.com:35357/v2.0", username="admin", password="123456", tenant_name="admin")

当然,您将根据自己的选择更改auth_url、 *用户名、密码* 和租户名称。现在你可以使用keystone来执行所有的 api 任务:

keystone.tenants.list()
keystone.users.list()
keystone.roles.list()

或者使用dir(keystone)列出所有可用的选项。

您可以按如下方式重用令牌:

auth_ref = keystone.auth_ref or token = ksclient.get_raw_token_from_identity_service(auth_url="http://service-stack.linxsol.com:35357/v2.0", username="admin", password="123456", tenant_name="admin")

但请记住,它返回一个字典和一个原始标记,而不是您在上面看到的标记形式。

有关更多信息,请查看python-keystoneclient

我希望这会有所帮助。

于 2013-11-18T13:06:28.630 回答
0

使用python-keystoneclient包。

看看Client.get_raw_token_from_identity_service方法。

于 2013-11-17T18:50:21.763 回答
0

首先你必须安装 python-keystoneclient。

要生成令牌,您可以使用以下代码,在这里我想提一下,您可以使用您的服务器 url 更改身份验证 url,但端口号将相同,

from keystoneclient.v2_0 import client
username='admin'
password='1234'
tenant_name='demo'
auth_url='http://10.0.2.15:5000/v2.0' # Or auth_url='http://192.168.206.133:5000/v2.0'

如果您的用户名、密码或租户名称错误,那么您将得到keystoneclient.openstack.common.apiclient.exceptions.Unauthorized: Invalid user / password keystone = client.Client(username=username, password=password, tenant_name=tenant_name, auth_url=auth_url) token_dict = keystone.auth_ref token_dict

于 2015-08-25T06:10:34.110 回答