使用SCIM2的PATCH/PUT API更新WSO2 IS 6.0.0的userName时为何出现mutability错误?
解决WSO2 Identity Server中SCIM2 API无法更新userName的问题
问题描述
通过SCIM2的PATCH/PUT API传入用户ID,尝试更新WSO2 Identity Server中的userName属性时,返回400错误:
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:Error" ], "scimType": "mutability", "detail": "Attribute userName cannot be modified.", "status": "400" }
其中emails属性可正常更新,但userName无法修改,请求示例地址:https://localhost:9443/scim2/Users/c8c821ba-1200-495e-a775-79b260e717bd
原因分析
WSO2 Identity Server默认将userName属性的**可变性(mutability)**设为readOnly。因为userName是用户的核心唯一标识,默认禁止通过SCIM API修改,防止引发身份标识混乱。
解决方案
要允许修改userName,需调整SCIM2用户模式的配置:
- 打开WSO2 IS安装目录下的
<IS_HOME>/repository/conf/scim2-schema-extension.config文件 - 找到
urn:ietf:params:scim:schemas:core:2.0:User对应的配置块,定位userName属性的定义 - 将
mutability的值从readOnly改为readWrite,修改后的配置示例:
attributeConfigs: - name: userName dataType: string mutability: readWrite returned: always uniqueness: server caseExact: false
- 保存文件后,重启WSO2 Identity Server服务
- 重启完成后,即可通过SCIM2的PATCH或PUT API修改
userName属性
注意事项
- 修改
userName会影响依赖该属性的认证流程、用户关联数据(如应用授权记录),操作前需全面评估业务影响 - 若使用多租户环境,需确保在对应租户的配置中修改,或在主租户配置后同步到子租户
内容的提问来源于stack exchange,提问作者Ashu Mandi
相关产品推荐
相关产品推荐

