Create a token never expires in Openstack

来源:互联网 发布:猴王竞猜网站源码 编辑:程序博客网 时间:2024/05/20 06:30
In case you are more accustomed to use POSTER for REST API operations, you need a token to authenticate yourself. Here is a way to create a token never expires:

1. Open /etc/keystone/keystone.conf, set the the following parameter value, then restart keystone.
[driver]
token=keystone.token.backend.sql.Token

2. Create a token by login horizon or using a post request explicitly. This ensures there is at least one token in database.

3. Login your local database using  'mysql --user=[user name] --password=[password]', then type,
use keystone
select * from token
Then you can see a list of tokens, and choose one which represents admin(you can identify it by checking the 'extra' column.
Finally here is the evil trick,
update token set expires = '2999-12-30 00:00:00' where id = 'the id of the token you choosed'
OK now you have a token you can use forever.

I`ll explain the trick a little here, in openstack the authentication is based on so called tokens. A token is created for each user during a period of  time so that the user don`t have to login with user name and password each time he perform any operations. The token itself is essentially a UUID, used as a key into a map which stores the user information. By default the storage is in memory which does not persist over restart, and more importantly we can not modify.
We first change the storage to mysql database and then we create a token in it. Then we make the token never expires so that we can always use it.