2016-04-29 11 views
0

Ich habe OpenLdap mit Identity Server (IS) verbunden und Authentifizierung war auch erfolgreich. Jetzt versuche ich einen 389 Directory Server mit IS zu verbinden. Verbindung erfolgreich ist, aber ich bin erhalte eine Fehlermeldung,WSO2 IS Fehler 389DS, kann nicht gefunden werden Admin

Caused by: org.wso2.carbon.user.core.UserStoreException: Admin user can not be created in primary user store. User store is read only. Please pick a user name which is exist in the primary u 
ser store as Admin user 

Meine Konfiguration ist,

<Configuration> 
    <AddAdmin>False</AddAdmin> 
     <AdminRole>wsoadmin</AdminRole> 
     <AdminUser> 
      <UserName>banderson</UserName> 
      <Password>*****</Password> 
     </AdminUser> 
     <EveryOneRoleName>everyone</EveryOneRoleName> <!-- By default users in this role sees the registry root --> 
     <Property name="isCascadeDeleteEnabled">true</Property> 
     <Property name="dataSource">jdbc/WSO2CarbonDB</Property> 
    </Configuration> 

<UserStoreManager class="org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager"> 
     <Property name="TenantManager">org.wso2.carbon.user.core.tenant.CommonHybridLDAPTenantManager</Property> 
     <Property name="ConnectionURL">ldap://URL:389/o=NetscapeRoot</Property> 
     <Property name="ConnectionName">cn=Directory Manager</Property> 
     <Property name="ConnectionPassword">password</Property> 
     <Property name="UserSearchBase">ou=People,dc=example,dc=edu</Property> 
     <Property name="UserNameAttribute">uid</Property> <!--i even tried "cn" here --> 
     <Property name="UserNameSearchFilter">(&amp;(objectClass=person)(uid=?))</Property> 
     <Property name="UserNameListFilter">(objectClass=person)</Property> 
     <Property name="DisplayNameAttribute"/> 
     <Property name="ReadGroups">true</Property> 
     <Property name="GroupSearchBase">ou=system</Property> 
     <Property name="GroupNameAttribute">cn</Property> 
     <Property name="GroupNameSearchFilter">(&amp;(objectClass=groupOfNames)(cn=?))</Property> 
     <Property name="GroupNameListFilter">(objectClass=groupOfNames)</Property> 
     <Property name="MembershipAttribute">member</Property> 
     <Property name="BackLinksEnabled">false</Property> 
     <Property name="UsernameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property> 
     <Property name="PasswordJavaRegEx">^[\S]{5,30}$</Property> 
     <Property name="RolenameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property> 
     <Property name="SCIMEnabled">false</Property> 
     <Property name="PasswordHashMethod">PLAIN_TEXT</Property> 
     <Property name="MultiAttributeSeparator">,</Property> 
     <Property name="MaxUserNameListLength">100</Property> 
     <Property name="MaxRoleNameListLength">100</Property> 
     <Property name="UserRolesCacheEnabled">true</Property> 
     <Property name="ConnectionPoolingEnabled">true</Property> 
     <Property name="LDAPConnectionTimeout">5000</Property> 
     <Property name="ReadTimeout"/> 
     <Property name="RetryAttempts"/> 
     <Property name="ReplaceEscapeCharactersAtUserLogin">true</Property> 
    </UserStoreManager> 

Das ist mein user.ldif,

dn: cn=admin,dc=example,dc=edu 
objectClass: simpleSecurityObject 
objectClass: organizationalRole 
cn: admin 
userPassword: password 
description: LDAP administrator 
dn: uid=jsmith,ou=People,dc=example,dc=edu 
objectClass: organizationalPerson 
objectClass: person 
objectClass: top 
objectClass: inetOrgPerson 
givenName: Joe 
uid: jsmith 
sn: Smith 
cn: John Smith 
userPassword: password 
dn: uid=banderson,ou=People,dc=example,dc=edu 
objectClass: organizationalPerson 
objectClass: person 
objectClass: top 
objectClass: inetOrgPerson 
givenName: Bob 
uid: banderson 
sn: Anderson 
cn: Bob Anderson 
userPassword: password 

ds-Setup-Informationen,

[General] 
AdminDomain = example.edu 
ConfigDirectoryAdminID = admin 
ConfigDirectoryAdminPwd = admin 
ConfigDirectoryLdapURL = ldap://localhost:389/o=NetscapeRoot 
FullMachineName = localhost 
ServerRoot = /usr/lib64/dirsrv 
SuiteSpotGroup = nobody 
SuiteSpotUserID = nobody 
[admin] 
Port = 9830 
ServerAdminID = admin 
ServerAdminPwd = admin 
ServerIpAddress = 0.0.0.0 
SysUser = nobody 
[slapd] 
AddOrgEntries = Yes 
AddSampleEntries = No 
InstallLdifFile = suggest 
RootDN = cn=Directory Manager 
RootDNPwd = password 
ServerIdentifier = dir 
ServerPort = 389 
SlapdConfigForMC = yes 
Suffix = dc=example,dc=edu 
UseExistingMC = No 

Ldap Struktur, http://prntscr.com/ay7p6r

Bitte helfen Sie mir, dies zu debuggen, ich habe durch die WSO2 Docs mehrere Kombinationen versucht, konnte aber nicht lösen.

Dank

--- edit --- Secondary Benutzerspeicher-Konfigurationsdatei,

<?xml version="1.0" encoding="UTF-8"?><UserStoreManager class="org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager"> 
     <Property name="ConnectionURL">ldap://URL:389</Property> 
     <Property name="ConnectionName">cn=Directory Manager</Property> 
     <Property encrypted="true" name="ConnectionPassword">U57XaWZIJHoj8hyMpGTHriXtOdSwZwEBSPjvHmDM/Td9QPGFo1obCWbW/z6W5ebVAKdsIQ7Tii9sUYtNptW2DH14SfUbPTZO80dIl3W2LPMLlWQVJ8DyDedAJo9WgP8490r56TjoJKHN4J5EdJwApYuQPDZMsuBSj80gaAJlpfk=</Property> 
     <Property name="UserSearchBase">ou=People,dc=example,dc=edu</Property> 
     <Property name="UserNameAttribute">uid</Property> 
     <Property name="UserNameSearchFilter">(&amp;(objectClass=person)(uid=?))</Property> 
     <Property name="UserNameListFilter">(objectClass=person)</Property> 
     <Property name="UserDNPattern"/> 
     <Property name="DisplayNameAttribute">uid</Property> 
     <Property name="Disabled">false</Property> 
     <Property name="ReadGroups">true</Property> 
     <Property name="GroupSearchBase">ou=Groups,dc=wso2,dc=org</Property> 
     <Property name="GroupNameAttribute">cn</Property> 
     <Property name="GroupNameSearchFilter">(&amp;(objectClass=groupOfNames)(cn=?))</Property> 
     <Property name="GroupNameListFilter">(objectClass=groupOfNames)</Property> 
     <Property name="RoleDNPattern"/> 
     <Property name="MembershipAttribute">member</Property> 
     <Property name="MemberOfAttribute"/> 
     <Property name="BackLinksEnabled">false</Property> 
     <Property name="ReplaceEscapeCharactersAtUserLogin">true</Property> 
     <Property name="SCIMEnabled">false</Property> 
     <Property name="PasswordHashMethod">PLAIN_TEXT</Property> 
     <Property name="MultiAttributeSeparator">,</Property> 
     <Property name="MaxUserNameListLength">100</Property> 
     <Property name="MaxRoleNameListLength">100</Property> 
     <Property name="UserRolesCacheEnabled">true</Property> 
     <Property name="ConnectionPoolingEnabled">false</Property> 
     <Property name="LDAPConnectionTimeout">5000</Property> 
     <Property name="ReadTimeout">5000</Property> 
     <Property name="RetryAttempts">0</Property> 
     <Property name="DomainName">389ds.com</Property> 
     <Property name="Description">testing 389 DS</Property> 
</UserStoreManager> 
+0

Können Sie falsch statt 'False' überprüfen? –

+0

Ja, versuchte das, vor dem gleichen Fehler. Eine ähnliche Konfiguration hat mit OpenLdap funktioniert. Aber Probleme mit 389 DS –

+0

Ich bin mir nicht sicher, das Problem hier.Was Sie tun können, ist, dies zuerst als sekundärer Benutzerspeicher von der Verwaltungskonsole in einem neuen IS-Paket zu versuchen und festzustellen, welche die richtigen Konfigurationen sind. Dann wird eine Konfigurationsdatei für diesen Benutzerspeicher unter repository/deployment/server/userstore/erstellt. Dann können wir den primären Benutzerspeicher hinzufügen, indem wir auf das verweisen. –

Antwort

0

In Ihrer Konfiguration Benutzerspeicher-Manager haben Sie org.wso2.carbon.user.core .ldap.ReadOnlyLDAPUserStoreManager

Aber, können Sie versuchen, das gleiche nach der Konfiguration unter der Klasse Hinzufügen org.wso2.carbon.user.core.ldap.ReadWriteLDAPUserStoreManager

gesetzt Auch wahr so, dass, wenn der Benutzer admin nicht existiert, es hinzufügen.

2

sich nach den Protokollen Sie im Kommentar geteilt, Sie werden immer Fehler folgen,

Caused by: org.wso2.carbon.user.core.UserStoreException: Admin role can not be created in primary user store. Add-Admin has been set to false. Please pick a Role name which is exist in the primary user store as Admin Role

Dies geschieht, weil laut configs Sie in der Anwender mgt.xml, admin Rolle „wsoadmin“ angegeben kann nicht im Verzeichnisserver 389 gefunden werden.

Und es scheint, dass Ihre Gruppenkonfigurationen auch in der Benutzer-mgt.xml falsch sind. Wenn Sie möchten, wird keine Gruppeninformationen von 389 Verzeichnisserver folgende Eigenschaft in dem Benutzer mgt.xml holen, <Property name="ReadGroups">true</Property>

Above Eigenschaft ungültig auf Gruppeninformationen auf dem Verzeichnisserver überprüft und automatisch umschalten Gruppen von IS zu suchen interne Datenbank, erstellen Sie eine interne Rolle mit dem Namen "wsoadmin", weisen Sie der internen Rolle "wsoadmin" den Administratorbenutzer "banderson" zu und schließen Sie den Startvorgang erfolgreich ab.

HTH, Darray

Verwandte Themen