WSO2 API Manager通过SSO登录后用户新增权限被覆盖如何解决
问题根因
这是WSO2 APIM对接SSO时的典型配置问题:默认情况下,用户通过外部IDP完成SSO登录时,APIM会触发权限覆盖逻辑,直接用IDP侧同步过来的角色列表覆盖用户在APIM本地手动配置的角色,你之前给用户加的publisher creator权限是本地配置的,自然会被重置为初始状态。
修复步骤
- 禁用SSO登录时的本地角色覆盖规则
打开APIM安装目录下的<APIM_HOME>/repository/conf/deployment.toml文件,添加如下配置:
该配置会保留用户在APIM本地被分配的所有角色,不会在SSO登录时被清空。[authentication.framework.extensions] post_auth_handler = "org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultPostAuthenticationHandler" [identity.user_account_mgt] remove_existing_roles_locally = false remove_existing_roles_from_idp = false - 配置IDP角色映射(可选,适合权限统一在IDP侧管理的场景)
如果你不想在APIM本地手动分配权限,可以进入APIM管理控制台的身份提供商配置页,找到你对接的SSO IDP配置,在「角色映射」模块添加规则:将IDP侧对应用户的角色,直接映射为APIM内置的Internal/publisher_creator角色,这样SSO登录时权限会自动同步,不会出现丢失问题。 - 验证配置生效
保存配置后重启WSO2 APIM服务,重新给目标用户分配publisher creator权限,再让用户通过SSO依次访问Publisher UI和Subscriber UI,确认权限不会被重置即可。
注意:如果你使用的是WSO2 APIM 2.x版本,不需要修改deployment.toml,直接打开
<APIM_HOME>/repository/conf/identity/identity.xml,将RemoveExistingUserRolesUponLogin参数值改为false即可。
内容的提问来源于stack exchange,提问作者seeandsea
相关产品推荐
相关产品推荐

