Xdmod integration: understanding httpd log entries

My dev ondemand server records this when the session opens:
129.22.118.159 - mrd20 [16/Jun/2025:14:53:16 -0400] “GET /pun/sys/dashboard/assets/xdmod-8fd70dfb5d5d6aba8219556e3033f72fd553212a0989bd9de02c7429faf835aa.js HTTP/1.1” 200 188883 “Login” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:139.0) Gecko/20100101 Firefox/139.0”

I don’t find any other log files recording the name of the xdmod dev server.

On the xdmod dev server, this appears in ../httpd/apache_access.log
129.22.118.159 - - [16/Jun/2025:15:12:32 -0400] “GET / HTTP/1.1” 200 15195 “https://ondemand01.case.edu/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:139.0) Gecko/20100101 Firefox/139.0”

This lacks anything consistent with an authentication token.

What is supposed to pass forth and back between the ood and xdmod servers when the xdmod widgets are configured for use in the ondemand dashboard? And in what files should I see the record of this auth token passing back and forth?

Thanks
ps As always, i’m happy to be corrected whenever I’m not thinking correctly about something

This is the flow below. You interact with these servers (along with your Identity Provider), but they don’t interact with each other directly.

  • You request the OnDemand page
  • You’re served the OnDemand page
  • javascript from the OnDemand page issues some fetch calls to your XDMoD
  • XDMoD responds to your fetch calls, likely redirecting you to your Identity provider.
  • You’re Identity provider responds, and if everything went well, redirects back to XDMoD to provide the requested data.

Here’s a snippet of my network tab in my browser when I login to our machines. The request I’ve highlighted is the first in the flow. It is a request from my laptop to our XDMoD instance. You can see after a few XDMoD requests, it starts routing me to my IDP.

This all works of of what HTTP calls Cross Origin Resource Sharing or CORS. That’s the basic functionality of how any given internet site can be made up of many other sites (think about how ads are injected into a webpage, not from the original web page, but from some other domain. it works through CORS).

These credentials are passed as cookies (which are HTTP headers). Setting httpd logs up to very high levels of logging may log headers, but I’m not sure. In any case, that’s why you don’t see them - they’re headers which httpd isn’t logging, at least by default.

Thanks Jeff! This will foster useful troubleshooting and discussions locally. Will report back on our findings.

Best
~ Em

Here’s the network tab output from my ondemand server, which lacks any entries from xdmod

So I must be missing important elements from the ondemand configuration, yes?

So, manual changes to xdmod portal_settings.ini are seemingly fragile. I’d previously included the ‘domains’ statement manually, and discovered today that it was likely changed and not restored during our upgrade from 10.5 to 11.0.

Now ‘domains’ is set in the portal_settings.ini:

domains = “https://ondemand01.case.edu

and the frame ancestors:
frame_ancestors: https://*.case.edu ‘self’

After updating ondemand.yml to adjust dashboard to present both xdmod widgets, I’m now seeing 500 codes reported in the network: signin to xdmod messages in the widget windows. The session, however, is signed in through Case SSO to xdmod.

Perhaps this is where xdmod:SimpleSAML and ondemand:CAS are unable to communicate? Or perhaps there is another root cause at play?

Best

The network output:

From ondemand server: /var/log/httpd/ondemand01.case.edu_error_ssl.log

req_filename=“proxy:http://localhost/pun/sys/dashboard/analytics/xdmod_jobs_widget_error?error=Error%3A+Internal+Server+Error

Is this a unique error that helps determine what’s wrong with my local configuration?
What is shown in all the xdmod widgets is:
Error: Internal Server Error Please ensure you are logged into Open XDMoD first, and then try again.

From the xdmod server, the httpd/exceptions.log reports that the xdmod database is incomplete
to satisfy job efficiency:
2025-06-27 11:26:37 [error] Message: SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘modw_aggregates.jobefficiency_by_day’ doesn’t exist

Thanks

This seems to be the root cause of the error - though I don’t know how to resolve it as it’s an XDMoD error.

Right. Maybe I can’t resolve authentication when xdmod is not satisfied about the database.

Time to redirect attention back to the xdmod setup.
Enjoy the weekend