I am using a multi-site installation with Shared Sign-On and using the Services module to distribute some content around the various websites using XML-RPC web services. The websites have different databases but share user and session info via MySQL views, hence the shared sign-on. If the Shared Sign-On master website is the same website exposing web services there is no problem, but as soon as you want one of the other websites in the cluster to expose web services it fails silently.

From examination of the problem, it *appears* (though it's hard to be certain) as if the posted XML data gets lost when Shared Sign-On tries to redirect the incoming request via the /singlesignon url. Access logs look like this:

127.0.0.1 - - [30/Jul/2008:18:40:14 +0100] "POST /singlesignon/initial_check?slave_session=26a0e75206192b412910f68eca8cab79&singlesignon_dest=http%3A%2F%2Fd6%2Fservices%2Fxmlrpc HTTP/1.0" 302 -
127.0.0.1 - - [30/Jul/2008:18:40:14 +0100] "POST /services/xmlrpc HTTP/1.0" 302 -

But if the web service is running on the master server then the access log looks like this, and all is fine:

127.0.0.1 - - [30/Jul/2008:18:40:14 +0100] "POST /services/xmlrpc HTTP/1.0" 200 -

Which points the finger squarely at Shared Sign-On. =(

Comments

greg.harvey’s picture

Priority: Normal » Critical

status changed

greg.harvey’s picture

Errmmm... *bump* ...

??

greg.harvey’s picture

Priority: Critical » Normal
Status: Active » Closed (works as designed)

Hi,

I looked in to this further and discovered the 'Target URL' box under settings. To use web services on a site other than the 'Master URL' site of your Drupal installation, you need to add something like this to the 'Target URL' box for each endpoint you intend to provide:

\/services\/xmlrpc$