我有一个wso2是5.1.0服务器在Debian上运行。我有一个简单的servlet,它使用Oauth2进行身份验证,并与主存储中的用户完美配合。wso2是次要用户存储认证
我已经创建了一个指向openldap服务器的辅助存储。我有一些用户和组,并从IS正确看到。我看到,当我尝试看看用户配置文件我得到以下错误:
Error while loading user profile metadata
但是当我尝试使用用户的LDAP服务器进行身份验证我得到一个登录失败的错误。我试图使用用户名,域名/用户名和用户名@域,但没有工作。
我开始认为它可能与Calim配置有关,因为不同商店中的用户有不同的值,但我不知道如何解决它。
关于我在做什么的错误?
已更新:
这是我如何定义二级存储。
<?xml version="1.0" encoding="UTF-8"?><UserStoreManager class="org.wso2.carbon.user.core.ldap.ReadWriteLDAPUserStoreManager">
<Property name="ConnectionURL">ldap://xxxx:389</Property>
<Property name="ConnectionName">cn=admin,dc=xx,dc=xx</Property>
<Property encrypted="true" name="ConnectionPassword">xxxx</Property>
<Property name="UserSearchBase">ou=users,dc=nextel,dc=es</Property>
<Property name="UserEntryObjectClass">inetOrgPerson</Property>
<Property name="UserNameAttribute">cn</Property>
<Property name="UserNameSearchFilter">(&(objectClass=person)cn=?))</Property>
<Property name="UserNameListFilter">(objectClass=person)</Property>
<Property name="UserDNPattern"/>
<Property name="DisplayNameAttribute"/>
<Property name="Disabled">false</Property>
<Property name="ReadGroups">true</Property>
<Property name="WriteGroups">true</Property>
<Property name="GroupSearchBase">ou=groups,dc=xx,dc=xx</Property>
<Property name="GroupEntryObjectClass">groupOfNames</Property>
<Property name="GroupNameAttribute">cn</Property>
<Property name="GroupNameSearchFilter">(&(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="UserNameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
<Property name="UserNameJavaScriptRegEx">^[\S]{3,30}$</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 pattern policy violated.</Property>
<Property name="RoleNameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
<Property name="RoleNameJavaScriptRegEx">^[\S]{3,30}$</Property>
<Property name="SCIMEnabled">false</Property>
<Property name="BulkImportSupported">true</Property>
<Property name="EmptyRolesAllowed">true</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="ReadTimeout">5000</Property>
<Property name="LDAPConnectionTimeout">5000</Property>
<Property name="RetryAttempts">0</Property>
<Property name="DomainName">incloudLDAP</Property>
<Property name="Description"/>
</UserStoreManager>
我可以看到列表中的用户,甚至通过WSO2创建一个新的LDAP,但我看不到参数。
已更新:
LDAP中的用户结构非常简单。
据我了解UserNameSearchFilter正确定义(见更新)。我不太了解索赔如何运作。 – jordi
好的。假设您有两个用户商店,分别为FOO和BAR。这两个用户商店都保留用户的名字,但具有不同的属性。 FOO在'fn'中保持名字,BAR保持在'bfn'中。那么我们必须告诉身份服务器,如果你要从FOO使用'fn'得到第一个名字,并且如果你要从BAR使用'bfn'。因此,我们可以在映射的属性部分中将该语句表示为FOO/fn; BAR/bfn – Thanuja
还可以从ldap查看器(如Apache Directory Studio)浏览测试用户并提供用户属性的屏幕截图? – Thanuja