在管理控制台中添加新用户时,无法将OpenLDAP设置为wso2is 5.6.0的主要用户存储:LDAP错误65

时间:2018-08-16 14:53:25

标签: ldap wso2 wso2is openldap ref

我无法使用OpenLDAP将WSO2 Identity Server v5.6.0设置为主外部用户存储。 Identity Server将按预期方式启动(控制台中没有错误),并且也自动创建了管理员用户帐户。但是,如果我尝试在每个管理控制台中添加新用户,则Identity Server会引发以下错误:

  

无法添加用户PRIMARY/johndoe@gmail.com。错误:无法访问目录上下文或用户:johndoe@gmail.com在系统中已经存在该用户

在LDAP控制台中,您可以看到wso2is试图添加具有ref-attribute的用户:

  

5b7589c9 conn = 1022 op = 2添加dn =“ mail = johndoe @ gmail.com,ou = Users,dc = wso2,dc = org”   5b7589c9 conn = 1022 op = 2 RESULT标签= 105 err = 65文字=属性“ ref”仅在引荐中允许

我不知道为什么wso2is正这样做。 Referral-Option已禁用,并且已导入WSO2特定的ldif文件。如何解决这个问题?

下面,我的user-mgt.xml配置:

<UserManager>
  <Realm>
   <Configuration>
    <AddAdmin>true</AddAdmin>
      <AdminRole>admin</AdminRole>
      <AdminUser>
        <UserName>admin@wso2.com</UserName>
        <Password>admin</Password>
      </AdminUser>
      <EveryOneRoleName>everyone</EveryOneRoleName> <!-- By default users in this role sees the registry root -->
      <Property name="isCascadeDeleteEnabled">true</Property>
      <Property name="initializeNewClaimManager">true</Property>
      <Property name="dataSource">jdbc/WSO2CarbonDB</Property>
    </Configuration>    
    <UserStoreManager class="org.wso2.carbon.user.core.ldap.ReadWriteLDAPUserStoreManager">
      <Property name="TenantManager">org.wso2.carbon.user.core.tenant.CommonHybridLDAPTenantManager</Property>
      <Property name="ConnectionURL">ldap://ldap:389</Property>
      <Property name="ConnectionName">cn=admin,dc=wso2,dc=org</Property>
      <Property name="ConnectionPassword">admin</Property>
      <Property name="AnonymousBind">false</Property>
      <Property name="UserSearchBase">ou=Users,dc=wso2,dc=org</Property>
      <Property name="UserEntryObjectClass">identityPerson</Property>
      <Property name="UserNameAttribute">mail</Property>
      <Property name="UserNameSearchFilter">(&amp;(objectClass=identityPerson)(mail=?))</Property>
      <Property name="UserNameListFilter">(&amp;(objectClass=identityPerson)(mail=*))</Property>
      <Property name="UserDNPattern">mail={0},ou=Users,dc=wso2,dc=org</Property>
      <Property name="DisplayNameAttribute"/>
      <Property name="ReadGroups">true</Property>
      <Property name="WriteGroups">true</Property>
      <Property name="GroupSearchBase">ou=Groups,dc=wso2,dc=org</Property>
      <Property name="GroupEntryObjectClass">groupOfNames</Property>
      <Property name="GroupNameAttribute">cn</Property>
      <Property name="GroupNameSearchFilter">(&amp;(objectClass=groupOfNames)(cn=?))</Property>
      <Property name="GroupNameListFilter">(objectClass=groupOfNames)</Property>
      <Property name="RoleDNPattern">cn={0},ou=Groups,dc=wso2,dc=org</Property>
      <Property name="MembershipAttribute">member</Property>
      <Property name="BackLinksEnabled">false</Property>
      <Property name="UsernameJavaRegEx">^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$</Property>
      <Property name="UsernameJavaScriptRegEx">^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$</Property>
      <Property name="UsernameJavaRegExViolationErrorMsg">Username pattern policy violated</Property>
      <Property name="PasswordJavaRegEx">^[\S]{5,30}$</Property>
      <Property name="PasswordJavaScriptRegEx">^[\S]{5,30}$</Property>
      <Property name="PasswordJavaRegExViolationErrorMsg">Password length should be within 5 to 30 characters</Property>
      <Property name="RolenameJavaRegEx">[a-zA-Z0-9._\-|//]{3,40}$</Property>
      <Property name="RolenameJavaScriptRegEx">^[\S]{3,40}$</Property>
      <Property name="SCIMEnabled">true</Property>
      <Property name="IsBulkImportSupported">false</Property>
      <Property name="EmptyRolesAllowed">false</Property>
      <Property name="PasswordHashMethod">PLAIN_TEXT</Property>
      <Property name="MultiAttributeSeparator">,</Property>
      <Property name="MaxUserNameListLength">100</Property>
      <Property name="MaxRoleNameListLength">100</Property>
      <Property name="kdcEnabled">false</Property>
      <Property name="defaultRealmName">WSO2.ORG</Property>
      <Property name="UserRolesCacheEnabled">true</Property>
      <Property name="ConnectionPoolingEnabled">false</Property>
      <Property name="LDAPConnectionTimeout">5000</Property>
      <Property name="ReadTimeout"/>
      <Property name="RetryAttempts"/>
    </UserStoreManager>

    <AuthorizationManager class="org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager">
      <Property name="AdminRoleManagementPermissions">/permission</Property>
      <Property name="AuthorizationCacheEnabled">true</Property>
      <Property name="GetAllRolesOfUserEnabled">false</Property>
    </AuthorizationManager>
  </Realm>
</UserManager>

1 个答案:

答案 0 :(得分:2)

发生上述错误的原因是,在WSO2 IS中,为了表示resourceType,我们已映射了一个名为“ ref”的ldap属性,但是似乎“ ref”是OpenLdap中保留的用于引用的属性。因此,我们看到了以上错误。

要解决此问题,您可以按照以下说明进行操作,

  1. 启动身份服务器后,转到“首页”->“身份”->“声明”->“列表”。
  2. 选择“ urn:ietf:params:scim:schemas:core:2.0”,然后单击“ urn:ietf:params:scim:schemas:core:2.0:meta.resourceType”上的编辑。
  3. 对于“映射的本地声明”,请选择一个您想要映射到的适当声明。例如:http://wso2.org/claims/userType,然后单击更新。

enter image description here

  1. 现在尝试通过管理控制台创建用户。