Author Topic: OD SSO - issue calling websphere java class WSCallbackHandlerImpl  (Read 1075 times)

Andreas Baaserud Hauge

  • Jr. Member
  • **
  • Posts: 46
    • View Profile
Hi,

Not sure if this topic is suitable for this forum or not..since it is related to OD authentication, I'll give it a shot.

System information:
OnDemand: 10.1.0.5
WebSphere 8.5.5 fixpack 20
Content Navigator 3.0.7

OnDemand configuration:
  • SSO enabled
  • AD users synchronised

WebSphere configuration:
  • SSO enabled
  • AD integration(SPNEGO/Kerberos)

Content Navigator configuration:
  • Deployed to WebSphere with Application Authentication enabled
  • Desktop, SSO enabled

When an AD user(i.e wasadmin) access the SSO Navigator Desktop, I receive the following error in WebSphere application server
Code: [Select]
SystemOut     O CIWEB Error: [wasadmin @ adserver] com.ibm.ecm.struts.actions.od.ODLogonAction.createODConnection()
java.lang.NoClassDefFoundError: com.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl
        at com.ibm.edms.od.ODServer.logonICN(ODServer.java:484)
        at com.ibm.ecm.struts.actions.od.ODLogonAction.createODConnection(ODLogonAction.java:307)
        at com.ibm.ecm.struts.actions.GetDesktopAction.desktopConnect(GetDesktopAction.java:431)
        at com.ibm.ecm.struts.actions.GetDesktopAction.executeBaseAction(GetDesktopAction.java:148)
        at com.ibm.ecm.struts.actions.BaseActionHandlerImpl.executeAction(BaseActionHandlerImpl.java:472)
        at com.ibm.ecm.struts.actions.BaseAction.execute(BaseAction.java:76)
        at com.ibm.ecm.jaxrs.Actions.loadAndExecuteAction(Actions.java:719)
        at com.ibm.ecm.jaxrs.Actions.handleAction(Actions.java:111)
        at com.ibm.ecm.jaxrs.Actions.handlePostActions(Actions.java:148)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
        at java.lang.reflect.Method.invoke(Method.java:508)
        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:75)
        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:75)
        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:75)
        at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleSubResourceMethod(FindResourceMethodHandler.java:188)
        at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleRequest(FindResourceMethodHandler.java:110)
        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:75)
        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:75)
        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:75)
        at org.apache.wink.server.internal.handlers.OptionsMethodWADLHandler.handleRequest(OptionsMethodWADLHandler.java:51)
        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:75)
        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:75)
        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:75)
        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:75)
        at org.apache.wink.server.handlers.AbstractHandlersChain.run(AbstractHandlersChain.java:60)
        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:124)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1233)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:782)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:481)
        at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97)
        at com.ibm.ecm.filters.ESAPIWafFilter.doFilter(ESAPIWafFilter.java:267)
        at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
        at com.ibm.ecm.filters.CORSFilter.doFilter(CORSFilter.java:96)
        at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:967)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1107)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4075)
        at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1019)
        at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:213)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)
        at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:88)
        at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1833)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:558)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:608)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:985)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1074)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892)
Caused by: java.lang.ClassNotFoundException: com.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl
        at java.net.URLClassLoader.findClass(URLClassLoader.java:610)
        at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:942)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:887)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:870)

The exception says class com.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl is not found. I have verified that the jar file where com.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl is located is loaded in WebSphere(sas.jar). Would it be beneficial if I included this jar file in the navigator war file, though I would expect navigator to be able to reach the jar file when its available on the same node as navigator.

Anyone can guide me somewhere? I have kind of hit the end of the tunnel right now :-\ thanks in advance  :)
ABH

rjrussel

  • Full Member
  • ***
  • Posts: 137
    • View Profile
Re: OD SSO - issue calling websphere java class WSCallbackHandlerImpl
« Reply #1 on: November 17, 2021, 05:52:47 PM »
It would appear something has screwed up the classpath in WAS and that is the cause of the error. I am not sure how you are setting the classpath for the other requirements but I wonder if that has overridden the WAS defaults.

-RR

Andreas Baaserud Hauge

  • Jr. Member
  • **
  • Posts: 46
    • View Profile
Re: OD SSO - issue calling websphere java class WSCallbackHandlerImpl
« Reply #2 on: November 22, 2021, 02:54:11 AM »
Thanks for your reply! :)

As you can see, I've loaded some of the OnDemand api's.

Code: [Select]
Classpath = /opt/IBM/WebSphere/AppServer/profiles/icn/properties:/opt/IBM/WebSphere/AppServer/properties:/opt/IBM/WebSphere/AppServer/lib/startup.jar:/opt/IBM/WebSphere/AppServer/lib/bootstrap.jar:/opt/IBM/WebSphere/AppServer/lib/lmproxy.jar:/opt/IBM/WebSphere/AppServer/lib/urlprotocols.jar:/opt/IBM/WebSphere/AppServer/deploytool/itp/batchboot.jar:/opt/IBM/WebSphere/AppServer/deploytool/itp/batch2.jar:/opt/IBM/WebSphere/AppServer/java/lib/tools.jar:/opt/IBM/ondemand/V10.1/www/api/ODApi.jar:/opt/IBM/ondemand/V10.1/jars/gson-2.8.1.jar
Code: [Select]
Java Library path = /opt/IBM/WebSphere/AppServer/lib/native/aix/ppc_64/:/opt/IBM/WebSphere/AppServer/java/jre/lib/ppc64/compressedrefs:/opt/IBM/WebSphere/AppServer/java/jre/lib/ppc64:/opt/IBM/WebSphere/AppServer/java/jre/lib/ppc64/j9vm:/opt/IBM/WebSphere/AppServer/java/jre/lib/ppc64:/opt/IBM/WebSphere/AppServer/java/jre/../lib/ppc64:/opt/IBM/WebSphere/AppServer/java/jre/lib/icc:/opt/IBM/WebSphere/AppServer/bin:/opt/IBM/ondemand/V10.1:/opt/IBM/ondemand/V10.1/www:/usr/lib64:/usr/lib:
ABH

rjrussel

  • Full Member
  • ***
  • Posts: 137
    • View Profile
Re: OD SSO - issue calling websphere java class WSCallbackHandlerImpl
« Reply #3 on: November 22, 2021, 06:39:44 AM »
Check on your WebSphere system where sas.jar is. It is what contains what WebSphere is looking for to validate the ltpa token.

Without knowing how you set the other jars I can't tell you what went wrong but something is over-riding the WAS default classpath.

Thanks,
RR

Andreas Baaserud Hauge

  • Jr. Member
  • **
  • Posts: 46
    • View Profile
Re: OD SSO - issue calling websphere java class WSCallbackHandlerImpl
« Reply #4 on: November 22, 2021, 02:36:35 PM »
As a dirty test, I copied sas.jar to WAS_installation/profiles/profile/installedApps/Cell/navigatorEAR.ear/lib
Now it seems the class com.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl is being loaded.

Looks like you are correct with something is up with my classpath, I'll update with my solution.

Thanks rjrussel
ABH