我正在尝试使用密码验证在ApacheDS中配置的用户并从Worklight客户端调用。
我无法从Worklight客户端传递用户名,我尝试使用我在客户端使用的用户名占位符,但它无效。然后我尝试在ApacheDS LDAP服务器中创建的硬编码uid及其工作。任何人都可以帮助我将客户端中提供的用户名传递给LDAP服务器。
我的authconfig文件:
<className>com.worklight.core.auth.ext.LdapLoginModule</className>
<parameter name="ldapProviderUrl" value="ldap://localhost:10389"/>
<parameter name="ldapTimeoutMs" value="2000"/>
<parameter name="ldapSecurityAuthentication" value="simple"/>
<parameter name="validationType" value="exists"/>
<parameter name="ldapSecurityPrincipalPattern" value="uid=Raj,ou=users,ou=system"/>
<parameter name="ldapSearchFilterPattern" value="(&(uid={usernameInput})(objectclass=inetOrgPerson)"/>
我需要使用<parameter name="ldapSecurityPrincipalPattern"
&#34;
答案 0 :(得分:4)
您正在使用exists
validationType,这意味着如果LDAP连接成功,授权将通过。用于访问ldap服务器的用户名是用{username}替换为authenticator提供的用户名后的ldapSecurityPrincipalPattern参数。用于连接的密码是验证者提供的密码。
例如。我提供'Mike'作为用户名,'pass123'作为我的密码。验证者将这些凭证发送到LdapLoginModule。如果我的ldapSecurityPrincipalPattern是:uid={username},ou=users,ou=system
,则将使用密码“pass123”尝试连接到{ddap服务器uid=Mike,ou=users,ou=system
。如果登录成功,则授权成功。
如果您还想查询ldap服务器以验证用户,则可以使用searchPattern
validationType。用户名可以替换为上面的ldapSearchFilterPattern。如果设置为此validationType,则只有在用户/ pass组合可用于连接LDAP服务器并且查询至少返回一个结果时,授权才会成功。