2016-04-16 1 views
1

J'essaie de faire face à WSO2 Identity Server 5.0.0 avec Active Directory en tant que magasin d'utilisateurs principal. J'ai la connectivité, LDAPS, base de données de travail, etc. et peut se connecter à la console d'administration en tant qu'administrateur que j'ai choisi, et peut rechercher avec succès les utilisateurs AD et voir les rôles. Cependant, si j'essaie d'afficher les détails d'un utilisateur ou de changer son mot de passe, je reçois des erreurs. Par exemple, lors d'une tentative de changer le mot de passe, je vois dans les journaux:Configurer WSO2 Identity Server avec Active Directory?

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 

mais je l'ai regardé cet utilisateur et cliqué sur le lien « mot de passe » dans l'affichage qui en résulte, de sorte qu'il a pu au moins trouver cet utilisateur dans la recherche.

Je suppose que les rôles AD de l'utilisateur que j'ai configuré pour la connexion LDAP ne sont pas suffisants pour effectuer ces tâches, mais je ne suis pas sûr. Suis-je sur la bonne piste, et si oui, quelles sont les exigences pour cet utilisateur? Ou, y a-t-il autre chose à résoudre concernant ces erreurs?

MISE À JOUR 18/04/2016: OK lorsque j'ai ajouté le déboguage suggéré dans une réponse (log4j.logger.org.wso2.carbon.user.core = DEBUG), j'ai remarqué que l'outil cherchait l'utilisateur par le CN et ne pas le trouver:

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 

Je renvoyé à la documentation et la documentation du fournisseur suggère que pour active Directory, l'utilisateur UserNameAttribute dans mgt.xml être mis au CN - nous avons eu cet ensemble à sAMAccountName.

Ainsi, nous avons changé au CN, et maintenant l'erreur est différente:

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

Pouvez-vous vérifier repository/logs/wso2carbon.log et voir s'il y a plus de détails sur cette erreur?Aussi pourquoi n'essayez-vous pas d'appliquer IS Service Pack 1 à votre configuration et vérifiez cela? De nombreux problèmes qui étaient disponibles dans IS 5.0.0 ont été corrigés dans SP1. –

+0

J'utilise une version packagée de l'IS d'un fournisseur, donc je suis bloqué à la version 5.0.0. La version emballée provient du fournisseur ERP d'Ellucian supérieur: http://www.ellucian.com/Software/Ellucian-Identity-Service/ – jcwhit1

+0

Obtenez-vous la dernière erreur lorsque vous essayez de récupérer les informations d'un utilisateur que vous avez créé avant de modifier le user-mgt.xml? –

Répondre

1

Ajouter en suivant la ligne de fichier <IS_HOME>repository/conf/log4j.properties, et essayer le scénario qui a échoué. Joignez également le fichier wso2caron.log pour analyser le problème.

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

Vous pouvez également joindre le fichier user-mgt.xml.

+0

S'il vous plaît voir les mises à jour au bas de la publication originale. – jcwhit1

0

Je pense avoir le même problème que vous. J'ai été en mesure d'obtenir la récupération de mot de passe à travailler pour un utilisateur en changeant la UserSearchBase ainsi il a complètement référencé l'OU pour l'utilisateur.

Dans notre cas, nous avons des utilisateurs dans:

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

En spécifiant la pleine unité d'organisation, la récupération de mot de passe fonctionne pour les utilisateurs dans cette unité d'organisation, mais les utilisateurs dans une autre unité d'organisation ne peut même pas se connecter

. Je veux que mon UserSearchBase soit défini sur DC = SomeCollege, DC = edu afin qu'il puisse rechercher toute notre arborescence, et cela fonctionne pour l'authentification, mais pas pour écrire dans Active Directory.

Je peux répliquer l'erreur en faisant un ldapmodify avec un ldif qui laisse une partie du DN pour un utilisateur, donc je suspecte que le problème réside dans la fonction updateCredentialByAdmin en ce sens qu'il essaye d'utiliser le CN et UserSearchBase devrait utiliser le DN complet.

J'ai également essayé d'utiliser plusieurs entrées UserSearchBase, en les séparant avec le caractère de hachage. Encore une fois, cela fonctionne pour l'authentification, mais pas pour les mises à jour.