如何通过DevStack减小OpenStack Keystone的X-Subject-Token尺寸
如何减小OpenStack Keystone的X-Subject-Token尺寸
嘿,我来帮你搞定这个问题~你现在拿到的这种长串X-Subject-Token(开头是gAAAAA),应该是Keystone默认用了JWT或者旧的PKI token格式,这俩都偏长。我们可以通过切换token类型来缩短它,下面是具体的操作步骤:
选项1:切换到UUID Token(最短的选择)
UUID token本质就是一个36字符左右的唯一标识符,它只是指向Keystone数据库里存储的token详情,本身非常短。操作步骤:
- 打开Keystone的配置文件
/etc/keystone/keystone.conf - 找到
[token]段落,修改provider参数为uuid:[token] provider = uuid - 重启Keystone服务(DevStack里Keystone由Apache托管,执行这条命令):
sudo systemctl restart apache2
选项2:用Fernet Token(安全与长度的平衡)
如果你不想牺牲安全性,Fernet token是更优的选择——它是加密的无状态token,不需要存在数据库里,长度比UUID长一点,但比你现在的token短太多。操作步骤:
- 同样修改
keystone.conf的[token]段落:[token] provider = fernet - 初始化Fernet密钥仓库(用DevStack的
stack用户执行):sudo keystone-manage fernet_setup --keystone-user stack --keystone-group stack - 重启Apache服务让配置生效:
sudo systemctl restart apache2
验证修改效果
- 重新执行你之前获取token的命令:
curl -i -H "Content-Type: application/json" -d '{ "auth": { "identity": { "methods": ["password"], "password": { "user": { "name": "admin", "domain": { "id": "default" }, "password": "test123" } } } }' "http://localhost/identity/v3/auth/tokens" ; echo - 此时返回的
X-Subject-Token会变成短格式:UUID是36个字符,Fernet大概44个字符左右,都比你之前的长串短很多。
小提醒
- 切换token类型后,之前生成的旧token会直接失效,需要重新获取新token才能正常使用。
- UUID token依赖数据库存储token数据,Fernet是无状态的,你可以根据自己的部署场景选择合适的类型。
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

