2
votes

I have MobileFirst Application Center with LDAP security and ACL Active. I can't upload files (For example: apk) to Application Center Console. When I disable ACL (ibm.appcenter.ldap.active=false) it runs. Other info: WebSphere Application Server 8.5.5.4 java.version = 1.7.0_79 os = Windows Server 2008 R2 (6.1; amd64) (en_US)

The messages.log is:

...
    [28/05/15 18:28:17:470 CEST] 000000dd com.ibm.puremeap.services.UploadService                      I file uploaded
    [28/05/15 18:28:17:470 CEST] 000000dd com.ibm.puremeap.services.UploadService                      E Exception during resource upload. FWLAC0401W: No user appears to be logged. Check the Application Center security configuration.
    [28/05/15 18:28:17:470 CEST] 000000dd com.ibm.puremeap.services.UploadService                      E {
        "id": "a41fe71a-5800-47f6-a844-0dde0fc5decd",
        "message": "FWLAC0000E: A server error was detected.",
        "params": [
        ],
        "productVersion": "7.0.0.00-20150312-0731"
    }
    com.ibm.puremeap.resources.exceptions.AccessControlException: FWLAC0401W: No user appears to be logged. Check the Application Center security configuration.
        at com.ibm.puremeap.resources.exceptions.AccessControlException.principalNotLogged(AccessControlException.java:47)
        at com.ibm.puremeap.services.BaseService.getUserPrincipal(BaseService.java:134)
        at com.ibm.puremeap.services.UploadService.fileUploaded(UploadService.java:147)
        at com.ibm.puremeap.services.UploadService.__fileUploadedJSON__(UploadService.java:109)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.wink.server.internal.handlers.InvokeMethodHandler.handleRequest(InvokeMethodHandler.java:63)
        at org.apache.wink.server.handlers.AbstractHandler.handleRequest(AbstractHandler.java:33)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
        at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
        at org.apache.wink.server.internal.handlers.CreateInvocationParametersHandler.handleRequest(CreateInvocationParametersHandler.java:54)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
        at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
        at org.apache.wink.server.handlers.AbstractHandler.handleRequest(AbstractHandler.java:34)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
        at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
        at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleSubResourceMethod(FindResourceMethodHandler.java:183)
        at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleRequest(FindResourceMethodHandler.java:110)
        at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleSubResourceLocator(FindResourceMethodHandler.java:230)
        at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleRequest(FindResourceMethodHandler.java:115)
        at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleSubResourceLocator(FindResourceMethodHandler.java:230)
        at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleRequest(FindResourceMethodHandler.java:115)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
        at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
        at org.apache.wink.server.internal.handlers.FindRootResourceHandler.handleRequest(FindRootResourceHandler.java:95)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
        at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
        at org.apache.wink.server.internal.handlers.HeadMethodHandler.handleRequest(HeadMethodHandler.java:53)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
        at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
        at org.apache.wink.server.internal.handlers.OptionsMethodHandler.handleRequest(OptionsMethodHandler.java:46)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
        at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
        at org.apache.wink.server.internal.handlers.SearchResultHandler.handleRequest(SearchResultHandler.java:33)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
        at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
        at org.apache.wink.server.internal.log.ResourceInvocation.handleRequest(ResourceInvocation.java:92)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
        at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
        at org.apache.wink.server.internal.log.Requests.handleRequest(Requests.java:76)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
        at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
        at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
        at org.apache.wink.server.handlers.AbstractHandlersChain.run(AbstractHandlersChain.java:52)
        at org.apache.wink.server.internal.RequestProcessor.handleRequestWithoutFaultBarrier(RequestProcessor.java:207)
        at org.apache.wink.server.internal.RequestProcessor.handleRequest(RequestProcessor.java:154)
        at org.apache.wink.server.internal.servlet.RestServlet.service(RestServlet.java:133)
        at com.ibm.puremeap.services.RestServlet.service(RestServlet.java:56)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1275)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:766)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:472)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:135)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:89)
        at com.ibm.puremeap.services.RestFilter.doFilter(RestFilter.java:60)
        at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:192)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:86)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:975)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1097)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4797)
        at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.handleRequest(DynamicVirtualHost.java:297)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:981)
        at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:262)
        at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:938)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

    [28/05/15 18:28:52:548 CEST] 0000007a com.worklight.core.ilmt.WorklightILMTLogger                  I FWLSE0277I: Creating an ILMT record in the file 'C:\Program Files\ibm\common\slm\982ad181584dffbb683680e2caa3ca7f.slmtag'.

Edited: The security config in server.xml is LDAP and for this app:

  <!-- Declare the IBM Application Center Console application. -->
    <application id="appcenterconsole" name="appcenterconsole" location="appcenterconsole.war" type="war">
        <application-bnd>
            <security-role name="appcenteradmin">
                <group name="WL_Admins"/>
            </security-role>
        </application-bnd>
    </application>

    <!-- Declare the IBM Application Center Services application. -->
    <application id="applicationcenter" name="applicationcenter" location="applicationcenter.war" type="war">
        <application-bnd>
           <security-role name="appcenteradmin">
            <group name="WL_Admins"/>
           </security-role>
           <security-role name="appcenteruser">
            <group name="WL_Users"/>
           </security-role>

        </application-bnd>
        <classloader delegation="parentLast">
            <commonLibrary>
                <fileset dir="${wlp.install.dir}/lib" includes="com.ibm.ws.crypto.passwordutil_1.0.1.jar"/>
            </commonLibrary>
        </classloader>
    </application>



<!-- Appcenter direct LDAP. --> 
<jndiEntry jndiName="ibm.appcenter.ldap.active" value="true"/>
<jndiEntry jndiName="ibm.appcenter.ldap.connectionURL" value="ldap://10.28.136.123:389"/>
<jndiEntry jndiName="ibm.appcenter.ldap.user.loginName" value="sAMAccountName"/>
<jndiEntry jndiName="ibm.appcenter.ldap.security.binddn" value="DOMAIN\AdminWorklight"/>
<jndiEntry jndiName="ibm.appcenter.ldap.security.bindpwd" value="*******"/>
<jndiEntry jndiName="ibm.appcenter.ldap.user.base" value="cn=Users,dc=mahou,dc=local"/>
<jndiEntry jndiName="ibm.appcenter.ldap.group.base" value="OU=Grupos,dc=domain,dc=local"/>
<jndiEntry jndiName="ibm.appcenter.ldap.user.displayName" value="displayName"/>
<jndiEntry jndiName="ibm.appcenter.ldap.group.name" value="cn"/>
<jndiEntry jndiName="ibm.appcenter.ldap.group.uniquemember" value="member"/>
<jndiEntry jndiName="ibm.appcenter.ldap.user.groupmembership" value="memberOf"/>
<jndiEntry jndiName="ibm.appcenter.ldap.cache.expiration.seconds" value="43200"/>
<jndiEntry jndiName="ibm.appcenter.ldap.referral" value='"follow"'/>
<jndiEntry jndiName="ibm.appcenter.ldap.user.filter" value='"(&amp;(sAMAccountName=%v)(objectClass=user))"'/>
<jndiEntry jndiName="ibm.appcenter.ldap.group.filter" value='"(&amp;(cn=%v)(objectcategory=group))"'/>
<!-- End of Appcenter direct LDAP. -->
2
Can you check if the information in this Stack Overflow post ( stackoverflow.com/questions/19161927/… ) helps you to resolve this issue? Also, I wanted to alert you that Windows Server 2008 R2 is not a supported OS for MobileFirst Platform Foundation 7.0. It's most likely that this is not the cause of the problem you are seeing, but just wanted to make sure you are aware.patbarron
Also verify your farm setup; I would bet it is not properly set. Do you also have a server farm in your pre-production environment? if yes, is it configuration the same also in the production environment? verify it.Idan Adar
Preproduction enviroment is not a farm. The solution of post 19161927 not works. I added more info to the question.Miguel Ángel Hernández Castro
I have simplified the problem. When I have a Access Control List (ACL) with LDAP active in a not farm server, the apk fails to upload.Miguel Ángel Hernández Castro

2 Answers

0
votes

The exception says that no user is found in the security context, and this means that the authentication is wrong, not the ACL. Probably you have mixed up BasicRegistry with LDAP ACL settings, which makes no sense.

This is Liberty, isn't it? You don't say it, but the server.xml fragment looks like Liberty. If Liberty, please check the <ldapRegistry> element in your server.xml (and if you have none, that's exactly the problem).

See Configuring LDAP Authentication (Liberty Profile) in the IBM Info Center (User Manual).

0
votes

Faced same issue , and after i downloaded this two libraries zlib.i686 and libstdc++.i686 it works fine .

yum install zlib.i686 libstdc++.i686

Regards, Mahdi.