When logging in from a network site, shibboleth_session_initiator_url() does not create the right target URL in WP3.0. ($GLOBALS['current_site'] seems to always be the "main" site). The result is that Shibboleth always sends you back to the main site's /wp-login.php instead of, e.g., /subsite/wp-login.php.
The fix is easy. At line 229 of shibboleth.php (in version 1.4), replace:
if ( function_exists('switch_to_blog') ) switch_to_blog($GLOBALS['current_site']->blog_id);
$target = site_url('wp-login.php');
if ( function_exists('restore_current_blog') ) restore_current_blog();
With:
$target = get_home_url(null, 'wp-login.php');