2016-04-16 12 views
1

Ich versuche WSO2 Identity Server 5.0.0 mit Active Directory als primären Benutzerspeicher aufzustehen. Ich verfüge über Konnektivität, LDAPS, Arbeitsdatenbank usw. und kann mich als Administrator, den ich gewählt habe, bei der Admin-Konsole anmelden und kann erfolgreich nach AD-Benutzern suchen und Rollen sehen.WSO2 Identity Server mit Active Directory konfigurieren?

Wenn ich jedoch versuche, die Details eines Benutzers anzuzeigen oder ihr Kennwort zu ändern, erhalte ich Fehler. Wenn zum Beispiel Passwort zu ändern versuchen, sehe ich in den Protokollen:

TID: [0] [IS] [2016-04-15 16:14:15,135] ERROR 
{org.wso2.carbon.user.mgt.ui.UserAdminClient} - User testuser does 
not exisit in the user store 
{org.wso2.carbon.user.mgt.ui.UserAdminClient} 
org.wso2.carbon.user.mgt.stub.UserAdminUserAdminException: 
UserAdminUserAdminException 

aber ich habe diesen Benutzer nachgeschlagen und klickte auf das „Passwort ändern“ -Link in der resultierenden Anzeige, so konnte sie zumindest finden dieser Benutzer bei der Suche.

Ich vermute, dass die AD-Rollen des Benutzers, den ich für die LDAP-Verbindung konfiguriert habe, nicht ausreichen, um diese Aufgaben durchzuführen, bin aber unsicher. Bin ich auf dem richtigen Weg, und wenn ja, was sind die Voraussetzungen für diesen Benutzer? Oder gibt es noch etwas anderes zur Fehlerbehebung im Zusammenhang mit diesen Fehlern?

UPDATE 4/18/2016: OK, als ich das in einer Antwort vorgeschlagene Debugging (log4j.logger.org.wso2.carbon.user.core = DEBUG) hinzufügte, bemerkte ich, dass das Tool nach dem Benutzer suchte von CN und finden es nicht:

TID: [0] [IS] [2016-04-18 10:19:42,394] DEBUG {org.wso2.carbon.identity.mgt.IdentityMgtEventListener} - Pre update credential by admin is called in IdentityMgtEventListener {org.wso2.carbon.identity.mgt.IdentityMgtEventListener} 
TID: [0] [IS] [2016-04-18 10:19:42,394] DEBUG {org.wso2.carbon.identity.mgt.IdentityMgtEventListener} - Updating credentials of user astudent16 by admin with a non-empty password {org.wso2.carbon.identity.mgt.IdentityMgtEventListener} 
TID: [0] [IS] [2016-04-18 10:19:42,394] DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} - Searching for user astudent16 {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} 
TID: [0] [IS] [2016-04-18 10:19:42,409] DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} - Searching for user with SearchFilter: (&(objectClass=user)(cn=astudent16)) in SearchBase: {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} 
TID: [0] [IS] [2016-04-18 10:19:42,472] DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} - Name in space for astudent16 is null {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} 
TID: [0] [IS] [2016-04-18 10:19:42,472] DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} - User: astudent16 exist: false {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} 
TID: [0] [IS] [2016-04-18 10:19:42,487] ERROR {org.wso2.carbon.user.mgt.ui.UserAdminClient} - User astudent16 does not exisit in the user store {org.wso2.carbon.user.mgt.ui.UserAdminClient} 
org.wso2.carbon.user.mgt.stub.UserAdminUserAdminException: UserAdminUserAdminException 

ich zurück zur Dokumentation bezeichnet, und der Verkäufer Dokumentation schlägt vor, dass für Active Directory, die UserNameAttribute in benutzer mgt.xml auf CN gesetzt werden - wir hatten diesen Satz zu sAMAccountName.

So wechselten wir zu CN, und jetzt der Fehler ist anders:

TID: [0] [IS] [2016-04-18 10:30:46,338] DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} - Searching for user A Student16 {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} 
TID: [0] [IS] [2016-04-18 10:30:46,354] DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} - Searching for user with SearchFilter: (&(objectClass=user)(cn=A Student16)) in SearchBase: {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} 
TID: [0] [IS] [2016-04-18 10:30:46,354] DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} - Name in space for A Student16 is CN=A Student16,OU=2016,OU=Students,OU=Accounts,DC=some,DC=org {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} 
TID: [0] [IS] [2016-04-18 10:30:46,354] DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} - User: A Student16 exist: true {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} 
TID: [0] [IS] [2016-04-18 10:30:46,463] DEBUG {org.wso2.carbon.user.core.ldap.ActiveDirectoryUserStoreManager} - value after escaping special characters in A Student16 : A Student16 {org.wso2.carbon.user.core.ldap.ActiveDirectoryUserStoreManager} 
TID: [0] [IS] [2016-04-18 10:30:46,463] DEBUG {org.wso2.carbon.user.core.ldap.ActiveDirectoryUserStoreManager} - Can not access the directory service for user : A Student16 {org.wso2.carbon.user.core.ldap.ActiveDirectoryUserStoreManager} 
javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-03100238, problem 2001 (NO_OBJECT), data 0, best match of: 
    'DC=some,DC=org' 
]; remaining name 'CN=A Student16' 
    at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3112) 
+0

Können Sie Repository/logs/wso2carbon.log überprüfen und sehen, ob es weitere Details zu diesem Fehler gibt?Warum versuchen Sie auch nicht, IS Service Pack 1 auf Ihr Setup anzuwenden und überprüfen Sie dies? Viele Probleme, die in IS 5.0.0 verfügbar waren, wurden in SP1 behoben. –

+0

Ich verwende eine gepackte Version des IS von einem Hersteller, so dass ich bei Version 5.0.0 feststecke. Die gepackte Version stammt von einem Anbieter von höherwertigen ERP-Produkten von Ellucian: http://www.ellucian.com/Software/Ellucian-Identity-Service/ – jcwhit1

+0

Erhalten Sie den neuesten Fehler, wenn Sie versuchen, Informationen eines Benutzers abzurufen, den Sie erstellt haben, bevor Sie die Datei ändern Benutzer-mg.xml? –

Antwort

1

In Anschluss an die Linie zu <IS_HOME>repository/conf/log4j.properties-Datei, und das Szenario versuchen, die fehlgeschlagen. Fügen Sie auch die Datei wso2caron.log an, um das Problem zu analysieren.

log4j.logger.org.wso2.carbon.user.core=DEBUG 

Fügen Sie auch die Datei user-mgt.xml hinzu.

+0

Bitte beachten Sie die Updates am Ende des ursprünglichen Beitrags. – jcwhit1

0

Ich denke, ich habe das gleiche Problem, das Sie sind. Ich konnte die Wiederherstellung des Kennworts für einen Benutzer durchführen, indem ich die UserSearchBase so änderte, dass die OU für den Benutzer vollständig referenziert wurde.

In unserem Fall haben wir die Nutzer in:

OU=FacStaff,OU=People,DC=SomeCollege,DC=edu 
OU=Students,OU=People,DC=SomeCollege,DC=edu 
OU=Sysusers,OU=PrivUsers,DC=SomeCollege,DC=edu 

Durch die vollständige OU Angabe funktioniert die Passwortwiederherstellung für Nutzer in dieser Organisationseinheit, aber die Benutzer in einem anderen OU kann in nicht einmal einloggen

. Ich möchte, dass meine UserSearchBase auf DC = SomeCollege, DC = edu gesetzt wird, so dass sie unseren gesamten Baum durchsuchen kann, und dies funktioniert für die Authentifizierung, aber nichts, wo sie in Active Directory schreiben muss.

Ich kann den Fehler replizieren, indem sie ein ldapmodify mit einem ldif zu tun, das für einen Benutzer Teil der DN auslässt, so dass ich vermute, dass das Problem liegt in der updateCredentialByAdmin Funktion, indem sie die CN und UserSearchBase zu verwenden versucht, wo es sollte die volle DN verwenden.

Ich habe auch versucht, mehrere UserSearchBase Einträge zu verwenden, indem Sie sie mit dem Hash-Zeichen trennen. Auch hier funktioniert es für die Authentifizierung, aber nicht für Updates.