WSO2 API管理器(wso2am-4.1.0) -创建API时未处理的延续引用错误



我已经安装了最新的API管理器并配置了部署。Toml指向一个只读ldap作为主用户存储。API管理器与ldap成功连接,并且可以使用指定为admin的ldap用户登录。

[user_store]
class="org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager"
type = "read_only_ldap"
[user_store.properties]
TenantManager="org.wso2.carbon.user.core.tenant.CommonHybridLDAPTenantManager"
ConnectionURL="ldap://<IP>:<PORT>"
ConnectionName="cn=<CN>,ou=<OU>,dc=ABC,dc=com"
ConnectionPassword="<password>"
AnonymousBind="false"
UserNameAttribute="<uname_atrribute>"
UserNameSearchFilter="(&amp;(objectClass=user)(uname_atrribute=?))"
ReadGroups="true"
GroupSearchBase="DC=ABC,DC=com"
GroupNameAttribute="cn"
GroupNameSearchFilter="(&amp;(objectClass=groupOfNames)(cn=?))"
GroupNameListFilter="(objectClass=groupOfNames)"
MembershipAttribute="member"
BackLinksEnabled="false"
UsernameJavaRegEx="[a-zA-Z0-9._\-|//]{3,30}$"
PasswordJavaRegEx="^[\S]{5,30}$"
SCIMEnabled="true"
PasswordHashMethod="PLAIN_TEXT"
MultiAttributeSeparator=","
MaxUserNameListLength="100"
MaxRoleNameListLength="100"
UserRolesCacheEnabled="true"
LDAPConnectionTimeout=5000
ReplaceEscapeCharactersAtUserLogin="true"
ConnectionRetryDelay="120000"
GroupSearchFilter="(objectClass=groupOfNames)"
UserEntryObjectClass="identityPerson"
IsBulkImportSupported="true"
EmptyRolesAllowed="true"
UserSearchBase="DC=ABC,DC=com"
ConnectionPoolingEnabled="false"
StartTLSEnabled="false"
WriteGroups="true"
RolenameJavaRegEx="[a-zA-Z0-9._\-|//]{3,30}$"
GroupEntryObjectClass="groupOfNames"
EnableMaxUserLimitForSCIM="false"
PasswordJavaRegExViolationErrorMsg="Password length should be within 5 to 30 characters"
PasswordJavaScriptRegEx="^[\S]{5,30}$"
UsernameJavaRegExViolationErrorMsg="Username pattern policy violated"
UserNameListFilter="(objectClass=person)"
UsernameJavaScriptRegEx="^[\S]{3,30}$"
kdcEnabled="false"

但是,下面的异常会阻止api被发布。

Caused by: org.wso2.carbon.user.core.UserStoreException: Error occurred while search user for filter : (&(objectClass=user)(uname_atrribute=wso2.system.user))
at org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager.getUserPropertyValues(ReadOnlyLDAPUserStoreManager.java:766)
at org.wso2.carbon.user.core.common.AbstractUserStoreManager.doGetUserClaimValues(AbstractUserStoreManager.java:7838)
at org.wso2.carbon.user.core.common.AbstractUserStoreManager.getUserIDFromUserName(AbstractUserStoreManager.java:12299)
at org.wso2.carbon.identity.mgt.listener.IdentityUserIdResolverListener.doPostGetRoleListOfUser(IdentityUserIdResolverListener.java:1221)
at org.wso2.carbon.user.core.common.AbstractUserStoreManager.getUserRoles(AbstractUserStoreManager.java:8608)
at org.wso2.carbon.user.core.common.AbstractUserStoreManager.doGetRoleListOfUser(AbstractUserStoreManager.java:8575)
at org.wso2.carbon.user.core.common.AbstractUserStoreManager.getRoleListOfUser(AbstractUserStoreManager.java:6701)
... 75 more
Caused by: javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name 'DC=ABC,DC=com'
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2917)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2891)
at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1846)
at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1769)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:392)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:358)
at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:276)
at org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager.searchUserForASearchBase(ReadOnlyLDAPUserStoreManager.java:1550)
at org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager.getUserPropertyValues(ReadOnlyLDAPUserStoreManager.java:674)
... 81 more

任何可行的解决方案都是高度赞赏的。提前谢谢。

异常"javax.naming. name的根本原因。PartialResultException:未处理的延续引用"在创建AD/LDAP服务器连接/上下文时,将referals属性设置为忽略或根本不设置(默认的referals值是"ignore")[1]).

您应该能够通过在配置

中设置reference来解决这个问题。[user_store.properties]推荐="follow">

[1] https://docs.oracle.com/javase/jndi/tutorial/ldap/referral/jndi.html

似乎WSO2正在尝试搜索一个名为WSO2 .system.user的用户。您可以尝试创建一个名为wso .system的用户。RO LDAP中的user。解决这些问题的最简单方法是将RO LDAP添加为辅助用户存储。

相关内容