使用keystone api创建用户(如Fiware Keystone API Create User中所示)。
我的步骤:
使用以下方式创建项目:
curl -s -H“X-Auth-Token:17007fe11124bd71eb60”-H“Content-Type: application / json“-d'{”tenant“:{”description“:”Project1“, “name”:“proyecto1”,“enabled”:true}}' http://localhost:35357/v2.0/tenants -X POST |蟒蛇 -mjson.tool
创建角色:
curl -s -H“X-Auth-Token:17007fe11124bd71eb60”-H“Content-Type: application / json“-d'{”role“:{”name“:”Project1Admin“, “description”:“project1的角色管理员”}}' http://localhost:35357/v3/roles | python -mjson.tool
创建用户:
curl -s -H“X-Auth-Token:17007fe11124bd71eb60”-H“Content-Type: application / json“-d'{”user“:{”default_project_id“: “d0f384973b9f4a57b975fcd9bef10c6e”,“description”:“admin1”, “enabled”:true,“name”:“admin”,“password”:“admin”, “email”:“admin@gmail.com”}}'http://localhost:35357/v2.0/users | python -mjson.tool
最后一步:创建用户角色 - 租户关系:
curl -s -H“X-Auth-Token:17007fe11124bd71eb60” http://localhost:35357/v2.0/tenants/d0f384973b9f4a57b975fcd9bef10c6e/users/admin1/roles/OS-KS/0c10f475076345368724a03ccd1c3403 -X PUT
如果我检查用户:
curl -s -H“X-Auth-Token:17007fe11124bd71eb60”http://localhost:5000/v3/users/admin1 | python -mjson.tool
响应:
{
"user": {
"default_project_id": "d0f384973b9f4a57b975fcd9bef10c6e",
"description": "admin1",
"domain_id": "default",
"email": "admin1@gmail.com",
"enabled": true,
"id": "admin1",
"links": {
"self": "http://localhost:5000/v3/users/admin1"
},
"name": "admin1",
"username": null
}
}
我认为这很好,但我尝试连接地平线并出现“无效的用户或密码”错误。获取日志的结果如下:
keystone.log
2016-04-20 07:56:03.949 2150 WARNING keystone.common.wsgi [-] Could not find user: admin1@gmail.com
2016-04-20 07:56:03.967 2150 INFO eventlet.wsgi.server [-] 127.0.0.1 - - [20/Apr/2016 07:56:03] "HEAD /v3/OS-TWO-FACTOR/two_factor_auth?user_name=admin1%40gmail.com&domain_name=Default HTTP/1.1" 404 159 0.077033
horizon.log:
[Wed Apr 20 07:59:41.934935 2016] [:error] [pid 5963:tid
140154061260544] Login failed for user "admin1@gmail.com".
任何人都知道为什么这个用户无法与地平线连接?
感谢
答案 0 :(得分:1)
在KeyRock中,我们使用name
字段存储用户电子邮件,并使用username
字段存储其用户名。创建用户时,请求中提供的所有属性,但name
,username
,default_project_id
,domain_id
和enabled
属性都已序列化,存储在名为extra
的字段中。因此,您的email
属性将存储在extra
字段中。
注册后,在登录Horizon并提供用户电子邮件时,Horizon会向Keystone发送请求以在name
字段中搜索该电子邮件。由于您输入admin1@gmail.com
,但您提供的实际名称为admin1
,因此登录Horizon将失败。
使用admin1@gmail.com
作为名称(而不是电子邮件)再次注册用户可以解决您的问题,但如果您不能,也可以在登录表单的电子邮件字段中输入admin1
能够重新创建用户。
希望这能解决您的问题!