2016-08-02 11 views
1

Ich habe WSO2 IS 5.0.0 ausgeführt, und von Zeit zu Zeit kann ich die Benutzer nicht löschen. Ich checke in die Datenbank und habe keine aktiven Tokens, Sessions usw. aber ich kann die Benutzer nicht entfernen. Wenn ich versuche, sie über die Admin-Konsole (Webseite) zu löschen, wird die Benutzerseite nur aktualisiert und der Benutzer, den ich löschen möchte, ist immer noch da. Wenn ich versuche, den Admin-Dienst zu nutzen und die Löschaktion durchzuführen, scheint alles in Ordnung zu sein, aber der Benutzer ist immer noch da. Was könnte das Problem verursachen?Benutzer konnte nicht gelöscht werden WSO2 IS

Dies ist der Stack-Trace (teilweise), die ich in den Protokollen habe, nachdem er versuchte den Benutzer Admin-Konsole zu löschen:

[2016.08.02 11: 07: 16.415] ERROR {org. wso2.carbon.identity.oauth.listener.IdentityOathEventListener} - Fehler beim Abrufen von OAuth-Anwendungsinformationen org.wso2.carbon.identity.oauth2.IdentityOAuth2Exception: Eintrag '[email protected]' für den Schlüssel 'CON_APP_KEY' duplizieren bei org.wso2.carbon.identity.oauth2.dao.TokenMgtDAO.revokeTokensByResourceOwner (TokenMgtDAO.java:931) bei org.wso2.carbon.identity.oauth.listener.IdentityOathEventListener.doPreDeleteUs er (IdentityOathEventListener.java:92) bei org.wso2.carbon.user.core.common.AbstractUserStoreManager.deleteUser (AbstractUserStoreManager.java:865) bei org.wso2.carbon.user.mgt.UserRealmProxy.deleteUser (UserRealmProxy. Java: 752) bei org.wso2.carbon.user.mgt.UserAdmin.deleteUser (UserAdmin.java:190) bei sun.reflect.NativeMethodAccessorImpl.invoke0 (native Methode) bei sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl .java: 57)

+1

Fehler im Backlog? Möglicherweise können Sie versuchen, das SP für IS 5.0 zu installieren, das hier gefunden werden kann: http://wso2.com/more-downloads/identity-server/ – ycr

+1

Ich fügte einige Zeilen der Stapelspur hinzu, damit es nützlich sein könnte –

Antwort

1

Dies scheint ein Bug zu sein und als Behelfslösung können Sie Einträge löschen für diesen Benutzer aus IDN_OAUTH2_ACCESS_TOKEN Tisch und versuchen, den Benutzer zu löschen. Oder wie bereits erwähnt, können Sie den SP für Identity Server installieren und versuchen. Oder Sie können auf die neueste IS version migrieren.

Schritte, um dieses Problem

Schritte zum Reproduzieren zu reproduzieren:

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

Hallo dort Danke für die Antwort. Soweit ich es bemerkt habe, gibt es einen Zugang Tokens für [email protected] ausgestellt und es ist ein Token für random_user @ yahoo.com @ carbon.super (es gibt wenige wie die erste, ohne @ carbon.super). Das Entfernen der wenigen führt nicht zum erfolgreichen Entfernen des Benutzers, sondern zum Löschen aller Zugangstoken, die zu diesem bestimmten Benutzer gehören. Also denke ich ist etwas in Bezug auf diese Tokens. Wahrscheinlich sollte ich mehr nachforschen. Vielen Dank. –

+0

Hi Vasil, Der Fehler ist doppelte Einträge werden hinzugefügt. Es scheint, dass dieser Fehler vom SP nicht behoben wird. Sie müssen auf die neueste IS-Version migrieren, um dies zu beheben. Auch habe ich einige Schritte in der Antwort für Sie hinzugefügt, um dieses Problem zu reproduzieren, so wird es leicht zu debuggen :) – ycr

0

Das Problem behoben ist nicht auf SP. Ich hoffe, dass die 5.1.0 dieses Problem lösen kann. Wenn Sie einen benutzerdefinierten jdbc Benutzerspeicher haben, können Sie Ihre doDeleteUser Reinigung der IDN_OAUTH2_ACCESS_TOKEN des Datensatzes des Benutzers, den Sie löschen, vor dem Aufruf super.doDeleteUser() ändern.

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

Ich hoffe, das könnte Ihnen helfen.

Verwandte Themen