无法删除用户 WSO2 IS
Unable to delete users WSO2 IS
我有 运行 WSO2 IS 5.0.0,有时我无法删除用户。我检查了数据库,但没有活动的令牌、会话等,但我无法删除用户。如果我尝试通过管理控制台(网页)删除它们,那么用户页面只会刷新,而我要删除的用户仍然存在。如果我尝试使用 Admin Service 并执行删除操作,一切似乎都很好,但用户仍然存在。可能导致问题的原因是什么?
这是我尝试从管理控制台删除用户后日志中的堆栈跟踪(部分):
[2016-08-02 11:07:16,415] ERROR {org.wso2.carbon.identity.oauth.listener.IdentityOathEventListener} - Error while retrieving OAuth application information
org.wso2.carbon.identity.oauth2.IdentityOAuth2Exception: Duplicate entry 'PLCQPGJ8_yYZ9lOb36xFg3gmdVwa-randomUser@carbon.super-AP' for key 'CON_APP_KEY'
at org.wso2.carbon.identity.oauth2.dao.TokenMgtDAO.revokeTokensByResourceOwner(TokenMgtDAO.java:931)
at org.wso2.carbon.identity.oauth.listener.IdentityOathEventListener.doPreDeleteUser(IdentityOathEventListener.java:92)
at org.wso2.carbon.user.core.common.AbstractUserStoreManager.deleteUser(AbstractUserStoreManager.java:865)
at org.wso2.carbon.user.mgt.UserRealmProxy.deleteUser(UserRealmProxy.java:752)
at org.wso2.carbon.user.mgt.UserAdmin.deleteUser(UserAdmin.java:190)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
这似乎是一个错误,作为解决方法,您可以从 IDN_OAUTH2_ACCESS_TOKEN table 中删除该用户的条目,然后尝试删除该用户。或者正如我提到的,您可以安装 SP for Identity Server 并尝试。或者您可以迁移到最新的 IS version.
重现此问题的步骤
重现步骤:
1.Generate access token
2. Wait until token expires(VALIDITY_PERIOD)
3. Regenerate token
4.Revoke it.(OAuthAdminService is used)
问题未在 SP
上解决。希望5.1.0
能解决这个问题。如果您有自定义 jdbc
用户存储,您可以修改 doDeleteUser
在调用 super.doDeleteUser()
.
之前清除要删除的用户记录的 IDN_OAUTH2_ACCESS_TOKEN
@Override
public void doDeleteUser(String userName) throws UserStoreException{
clean_idn_oauth2_access_token(userName);
super.doDeleteUser(userName);
}
希望对您有所帮助。
我有 运行 WSO2 IS 5.0.0,有时我无法删除用户。我检查了数据库,但没有活动的令牌、会话等,但我无法删除用户。如果我尝试通过管理控制台(网页)删除它们,那么用户页面只会刷新,而我要删除的用户仍然存在。如果我尝试使用 Admin Service 并执行删除操作,一切似乎都很好,但用户仍然存在。可能导致问题的原因是什么?
这是我尝试从管理控制台删除用户后日志中的堆栈跟踪(部分):
[2016-08-02 11:07:16,415] ERROR {org.wso2.carbon.identity.oauth.listener.IdentityOathEventListener} - Error while retrieving OAuth application information org.wso2.carbon.identity.oauth2.IdentityOAuth2Exception: Duplicate entry 'PLCQPGJ8_yYZ9lOb36xFg3gmdVwa-randomUser@carbon.super-AP' for key 'CON_APP_KEY' at org.wso2.carbon.identity.oauth2.dao.TokenMgtDAO.revokeTokensByResourceOwner(TokenMgtDAO.java:931) at org.wso2.carbon.identity.oauth.listener.IdentityOathEventListener.doPreDeleteUser(IdentityOathEventListener.java:92) at org.wso2.carbon.user.core.common.AbstractUserStoreManager.deleteUser(AbstractUserStoreManager.java:865) at org.wso2.carbon.user.mgt.UserRealmProxy.deleteUser(UserRealmProxy.java:752) at org.wso2.carbon.user.mgt.UserAdmin.deleteUser(UserAdmin.java:190) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
这似乎是一个错误,作为解决方法,您可以从 IDN_OAUTH2_ACCESS_TOKEN table 中删除该用户的条目,然后尝试删除该用户。或者正如我提到的,您可以安装 SP for Identity Server 并尝试。或者您可以迁移到最新的 IS version.
重现此问题的步骤
重现步骤:
1.Generate access token
2. Wait until token expires(VALIDITY_PERIOD)
3. Regenerate token
4.Revoke it.(OAuthAdminService is used)
问题未在 SP
上解决。希望5.1.0
能解决这个问题。如果您有自定义 jdbc
用户存储,您可以修改 doDeleteUser
在调用 super.doDeleteUser()
.
IDN_OAUTH2_ACCESS_TOKEN
@Override
public void doDeleteUser(String userName) throws UserStoreException{
clean_idn_oauth2_access_token(userName);
super.doDeleteUser(userName);
}
希望对您有所帮助。