使用MobileFirst在移动应用中使用LDAP服务器对用户进行身份验证

时间:2016-03-23 06:16:15

标签: ldap ibm-mobilefirst

我关注并使用了本教程: https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-7-1/foundation/authentication-security/using-ldap-login-module-to-authenticate-users-with-ldap-server-in-hybrid-applications/

我只编辑authenticationConfig.xml并运行应用程序

    <loginModule expirationInSeconds="-1" name="LDAPLoginModule">
        <className>com.worklight.core.auth.ext.LdapLoginModule</className>
        <parameter name="ldapProviderUrl" value="**************"/>
        <parameter name="ldapTimeoutMs" value="2000"/>
        <parameter name="ldapSecurityAuthentication" value="simple"/>
        <parameter name="validationType" value="searchPattern"/>
        <parameter name="ldapSecurityPrincipalPattern" value="{username}"/>
        <parameter name="ldapSearchFilterPattern" value="(&amp;(objectClass=user)(cn={username})(memberof=CN=******,OU=Clients,O=******))"/>
        <parameter name="ldapSearchBase" value="OU=Clients,O=******"/>
    </loginModule>

当我按下“受保护的适配器”时,它会进入LDAP登录模块,当我输入用户凭据时,没有任何反应,密码就会消失。

这是日志:

[警告] FWLSE4014W:LdapLoginModule身份验证失败。 Reason'javax.naming.AuthenticationException:[LDAP:错误代码49 - 8009030C:LdapErr:DSID-0C0903A9,注释:AcceptSecurityContext错误,数据2030,v1db1     at com.sun.jndi.ldap.LdapCtx.mapErrorCode(Unknown Source)     at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)     at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)     at com.sun.jndi.ldap.LdapCtx.connect(Unknown Source)     在com.sun.jndi.ldap.LdapCtx。(未知来源)     at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(Unknown Source)     at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(Unknown Source)     at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(Unknown Source)     at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(Unknown Source)     at org.apache.aries.jndi.ContextHelper.getInitialContextUsingBuilder(ContextHelper.java:244)     at org.apache.aries.jndi.ContextHelper.getContextProvider(ContextHelper.java:208)     at org.apache.aries.jndi.ContextHelper.getInitialContext(ContextHelper.java:141)     at org.apache.aries.jndi.OSGiInitialContextFactoryBuilder.getInitialContext(OSGiInitialContextFactoryBuilder.java:51)     在javax.naming.spi.NamingManager.getInitialContext(未知来源)     在javax.naming.InitialContext.getDefaultInitCtx(未知来源)     在javax.naming.InitialContext.init(未知来源)     在javax.naming.ldap.InitialLdapContext。(未知来源)     在com.worklight.core.auth.ext.LdapLoginModule.login(LdapLoginModule.java:158)     在com.worklight.core.auth.impl.LoginContext.invokeLoginModule(LoginContext.java:252)     在com.worklight.core.auth.impl.LoginContext.processRequest(LoginContext.java:217)     在com.worklight.core.auth.impl.AuthenticationContext.processRequest(AuthenticationContext.java:510)     在com.worklight.core.auth.impl.AuthenticationFilter.doFilter(AuthenticationFilter.java:182)     在com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:206)     在com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:86)     在com.worklight.analytics.AnalyticsFilter.doFilter(AnalyticsFilter.java:124)     在com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:206)     在com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:86)     在com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:978)     在com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1100)     在com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4730)     在com.ibm.ws.webcontainer.osgi.DynamicVirtualHost $ 2.handleRequest(DynamicVirtualHost.java:297)     在com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:981)     在com.ibm.ws.webcontainer.osgi.DynamicVirtualHost $ 2.run(DynamicVirtualHost.java:262)     at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink $ TaskWrapper.run(HttpDispatcherLink.java:955)     at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(Unknown Source)     at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)     在java.lang.Thread.run(未知来源) '[project LDAPLoginModule] [LDAP:错误代码49 - 8009030C:LdapErr:DSID-0C0903A9,注释:AcceptSecurityContext错误,数据2030,v1db1

知道什么似乎是问题?

1 个答案:

答案 0 :(得分:0)

根据错误日志中提供的例外情况:LdapLoginModule authentication failed. Reason 'javax.naming.AuthenticationException: [LDAP: error code 49 - 8009030C: LdapErr: DSID-0C0903A9

这可能与以下内容有关:https://social.technet.microsoft.com/Forums/windowsserver/en-US/c98f3569-072a-4677-9b89-635ed2b8dffc/ldap-error-code-49-8009030c-ldaperr-dsid0c0903a9-comment-acceptsecuritycontext-error-data?forum=winserverDS

  

与LDAP相关的错误代码49是由无效凭据引起的。请参考以下最可能的原因   1.您为管理员指定的DN路径或密码无效。以下任何一项都会导致此错误:
   1)。指向非用户DN
   2)。指向不存在的用户,但在现有DN中    3)。指向不存在的DN
   4)。指向现有用户,但不存在DN    5)。指向不正确的管理员DN,uid而不是cn
   6)。指向非管理员用户
   7)。指向有效的管理员但密码不正确
  2.无法验证尝试登录的用户。这可能是由于用户名或密码不正确,或者“设置”选项卡中指定的前缀和/或后缀不正确,这取决于LDAP / AD系统的类型。也可能意味着身份验证类型不正确。