You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过openstacksdk实现OpenStack当前登录用户密码修改

问题原因

你使用的update_user方法对应Keystone的PATCH /v3/users/{user_id}用户更新接口,该接口仅支持管理员无需原始密码修改任意用户密码的场景,和你需要调用的POST /v3/users/{user_id}/password普通用户改密接口不是同一个,因此update_user自然不支持original_password参数。同时你的示例代码还存在password拼写错误的问题。

正确实现代码

openstacksdk已经内置了对应用户改密接口的方法,直接调用即可:

import openstack

# 初始化OpenStack连接
conn = openstack.connect(
    region_name = 'RegionOne',
    auth_url = 'http://10.32.17.172:35357/v3',
    domain_name = 'Default',
    project_name = 'admin',
    username = 'admin',
    password = '123' # 当前使用的原始密码
)

# 获取当前登录用户对象,也可以直接传入指定的用户ID
current_user = conn.identity.get_user(conn.current_user_id)

# 调用改密接口
conn.identity.change_password(
    user=current_user,
    original_password='123', # 原始密码
    new_password='aaa' # 要设置的新密码
)

补充说明

如果是管理员账号修改其他用户的密码,不需要提供原始密码,可以直接用你之前找到的update_user方法实现:

# 管理员修改其他用户密码示例
target_user = conn.identity.get_user("目标用户的ID")
conn.identity.update_user(
    target_user,
    password="新的密码"
)

内容的提问来源于stack exchange,提问作者Victor Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:09:01