2016-08-02 4 views
1

У меня работает WSO2 IS 5.0.0, и время от времени я не могу удалить пользователей. Я проверяю в базе данных, и у меня нет активных токенов, сеансов и т. Д., Но я не могу удалить пользователей. Если я попытаюсь удалить их, хотя консоль администратора (веб-страница), тогда обновляется страница пользователей, и пользователь, которого я пытаюсь удалить, все еще существует. Если я попытаюсь использовать Admin Service и выполнить действие delete, все кажется прекрасным, но пользователь все еще там. Что может вызвать проблему?Невозможно удалить пользователей WSO2 IS

Это трассировку стека (частично), что у меня есть в журналах после попытки удалить пользователя из консоли администратора:

[2016-08-02 11: 07: 16415] ERROR {орг. wso2.carbon.identity.oauth.listener.IdentityOathEventListener} - Ошибка при получении информации о приложении OAuth org.wso2.carbon.identity.oauth2.IdentityOAuth2Exception: Дублирующая запись '[email protected] -AP' для ключа 'CON_APP_KEY' at org.wso2.carbon.identity.oauth2.dao.TokenMgtDAO.revokeTokensByResourceOwner (TokenMgtDAO.java:931) at org.wso2.carbon.identity.oauth.listener.IdentityOathEventListener.doPreDeleteUs er (IdentityOathEventListener.java:92) на org.wso2.carbon.user.core.common.AbstractUserStoreManager.deleteUser (AbstractUserStoreManager.java:865) на org.wso2.carbon.user.mgt.UserRealmProxy.deleteUser (UserRealmProxy. Java: 752) в org.wso2.carbon.user.mgt.UserAdmin.deleteUser (UserAdmin.java:190) на sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl .java: 57)

+1

Вы видите ошибки в отставании? Возможно, вы можете попробовать установить SP для IS 5.0, который можно найти здесь: http://wso2.com/more-downloads/identity-server/ – ycr

+1

Я добавил несколько строк трассировки стека, поэтому может быть полезно –

ответ

1

Это, кажется, ошибка и в качестве обходного пути вы можете удалить записи для этого пользователя из IDN_OAUTH2_ACCESS_TOKEN таблицы и попытайтесь удалить пользователя. Или, как я уже говорил, вы можете установить SP для Identity Server и попробовать. Или вы можете перейти на последнюю версию IS version.

Шаги для воспроизвести этот вопрос

Действия по воспроизведению:

1.Generate access token 
2. Wait until token expires(VALIDITY_PERIOD) 
3. Regenerate token 
4.Revoke it.(OAuthAdminService is used) 
+0

Привет. , спасибо за ответ. Насколько я заметил там токены доступа, выпущенные для [email protected], и есть токен для random_user @ yahoo.com @ carbon.super (их немного, как первый, без @ carbon.super). Удаление нескольких из них не приведет к удалению пользователя успешно, но удаление всех токенов доступа, принадлежащих данному конкретному пользователю. Поэтому я думаю, что это касается этих жетонов. Вероятно, я должен исследовать больше. Благодарю. –

+0

Привет, Василь, ошибка добавляется в двух экземплярах. Кажется, эта ошибка не исправлена ​​и SP. Вам нужно будет перейти на последнюю версию IS, чтобы устранить эту проблему. Также я добавил несколько шагов в ответ, чтобы вы воспроизвели эту проблему, поэтому ее легко отладить :) – ycr

0

Проблема не решена на SP. Я надеюсь, что 5.1.0 может решить эту проблему. Если у вас есть пользовательское хранилище jdbc, вы можете изменить свой doDeleteUser, очистив IDN_OAUTH2_ACCESS_TOKEN от записи пользователя, который вы удаляете перед вызовом super.doDeleteUser().

@Override 
public void doDeleteUser(String userName) throws UserStoreException{ 
    clean_idn_oauth2_access_token(userName); 
    super.doDeleteUser(userName); 
} 

Я надеюсь, что это может вам помочь.

Смежные вопросы