Authentication wso2是辅助用户存储身份验证

Authentication wso2是辅助用户存储身份验证,authentication,ldap,wso2,wso2is,oauth2,Authentication,Ldap,Wso2,Wso2is,Oauth2,我有一个wso2 is 5.1.0服务器在Debian上运行。我有一个简单的servlet,它使用Oauth2进行身份验证,并且可以与主存储中的用户完美协作 <?xml version="1.0" encoding="UTF-8"?><UserStoreManager class="org.wso2.carbon.user.core.ldap.ReadWriteLDAPUserStoreManager"> <Property name="Connecti

我有一个wso2 is 5.1.0服务器在Debian上运行。我有一个简单的servlet,它使用Oauth2进行身份验证,并且可以与主存储中的用户完美协作

<?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">(&amp;(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">(&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="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>
我已经创建了一个指向openldap服务器的二级存储。我有一些用户和组,可以从IS中正确地看到。我发现,当我试图查看用户配置文件时,会出现以下错误:

Error while loading user profile metadata
但是,当我尝试使用ldap服务器中的用户进行身份验证时,会出现登录失败错误。我尝试使用用户名、域/用户名和username@DOMAIN但这些都不起作用

我开始认为这可能与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">(&amp;(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">(&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="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>

ldap://xxxx:389
cn=管理员,dc=xx,dc=xx
xxxx
ou=用户,dc=nextel,dc=es
伊内托格人
cn
(&;(objectClass=person)cn=?)
(objectClass=person)
假的
真的
真的
ou=组,dc=xx,dc=xx
群名
cn
(&;(objectClass=groupof名称)(cn=?)
(objectClass=groupOfNames)
成员
假的
[a-zA-Z0-9.|-|/][3,30}$
^[\S]{3,30}$
违反了用户名模式策略。
^[\S]{5,30}$
^[\S]{5,30}$
违反了密码模式策略。
[a-zA-Z0-9.|-|/][3,30}$
^[\S]{3,30}$
假的
真的
真的
纯文本
,
100
100
假的
WSO2.ORG
真的
假的
5000
5000
0
包括
我可以看到列表中的用户,甚至可以通过WSO2 Is在LDAP上创建一个新的用户,但是我看不到参数

更新:

LDAP中的用户结构非常简单


对于身份验证问题,您需要验证“UserNameSearchFilter”属性是否正确配置。它必须映射到ladp服务器中的用户名属性

<Property name="UserNameSearchFilter">(&amp;(objectClass=user)(cn=?))</Property>

另请参阅-

,据我所知,UserNameSearchFilter的定义是正确的(请参阅更新)。我真的不明白索赔是怎么回事。假设您有两个用户存储,即FOO和BAR。两个用户存储都保留用户的名字,但属性不同。FOO将名字保留在'fn'中,BAR将其保留在'bfn'中。然后,我们必须告诉identity server,如果您要从FOO获得名字,请使用“fn”,如果您要从BAR获得名字,请使用“bfn”。因此,我们可以在映射属性部分将该语句表示为FOO/fn;BAR/bfnAlso您可以从ldap查看器(如Apache Directory Studio)浏览测试用户并提供用户属性的屏幕截图吗?那么,要创建声明,我必须创建新的声明方言和声明吗?方言Uri和声明Uri应该是什么?您不必创建新声明或新声明方言。您必须根据用户存储属性为您在用户配置文件中启用的声明添加正确的映射属性。