2013-10-01 68 views
0

我們已經將Drupal 7設置爲IP的SimpleSaml,允許用戶使用他們的Drupal憑證登錄到第三方服務。一切似乎都在進行,直到用戶在Drupal登錄頁面輸入他們的憑據,然而,一旦他們登錄,他們被重定向到SimpleSaml「演示示例」頁面。 (module.php/core/authenticate.php)Drupal 7 + SimpleSaml SSO登錄重定向到「Demo Example」頁面

他們所有的細節都是正確的,他們被清楚地認證,但重定向回第三方網站從未發生過。 我們已經檢查過,第三方正在發送包含AssertionConsumerServiceURL的正確(編碼)數據。

問題是要弄清楚如何讓Drupal重定向回第三方網址。使用

庫:

simpleSAMLphp version 1.11.0 
drupalauth for SimpleSAMLphp 1.7+ and Drupal 7.x 
drupalauth4ssp (which comes with the drupalauth module) 

配置:authsources.php的

SimpleSaml 2 
store.type: sql 
auth as: drupal-userpass 
Apache is configured correctly 
We are on Centos 
We have SSL offload implemented on our test environment which seems to be working ok 
(Load balancer 443 offloads to Apache 80) 

內容:

$config = array(

// This is a authentication source which handles admin authentication. 
'admin' => array(
    // The default is to use core:AdminPassword, but it can be replaced with 
    // any authentication source. 
    'core:AdminPassword', 
), 
'drupal-userpass' => array(
     'drupalauth:External', 

     // The filesystem path of the Drupal directory. 
     'drupalroot' => '/var/www/html/', 

    // Whether to turn on debug 
     'debug' => TRUE, 

     // the URL of the Drupal logout page 
     'drupal_logout_url' => 'https://[drupal_domain]/user/logout', 

     // the URL of the Drupal login page 
     'drupal_login_url' => 'https://[drupal_domain]/user', 

     // Which attributes should be retrieved from the Drupal site. 

      'attributes' => array(
       array('drupaluservar' => 'uid', 'callit' => 'uid'), 
       array('drupaluservar' => 'name', 'callit' => 'cn'), 
       array('drupaluservar' => 'mail', 'callit' => 'mail'), 
       array('drupaluservar' => 'field_user_firstname', 'callit' => 'givenName'), 
       array('drupaluservar' => 'field_user_lastname', 'callit' => 'sn'), 
       array('drupaluservar' => 'roles','callit' => 'roles'), 
      ), 
), 

); 

我很高興,如果需要發佈更多的信息。

+0

你能打印出'配置/ authsources.php'沒有憑據明顯:) – Patryk

+0

嗨Patryk,看到編輯。謝謝 –

回答

0

一個老問題,但如果你還沒有解決它。您應該包括重定向URL到的RelayState SAML參數

SAML請求:

<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
      xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 
      ID="_b6a80234ed663a4a818be0e80326ed4e0217b2fae4" 
      Version="2.0" 
      IssueInstant="2015-09-23T23:18:03Z" 
      Destination="http://www.domain.com/saml_login/idp?destination=other_siteURL" 

Drupal的要求:

www.domain.com/saml_login/idp?destination=other_siteURL (encode the destination) 

你也可能需要從simplesamlphp Drupal的模塊

刪除一些驗證

ie

// See if a URL has been explicitly provided in ReturnTo. If so, use it (as long as it points to this site). ?> 

if ((isset($_REQUEST['ReturnTo']) && $_REQUEST['ReturnTo']) && 
(valid_url($_REQUEST['ReturnTo']) && stristr($_REQUEST['ReturnTo'], $base_url))) 

那麼Drupal將帶你到:other_siteURL

0

有很多暗示什麼可能是錯在這裏http://code.google.com/p/drupalauth/source/browse/trunk/drupalauth/lib/Auth/Source/External.php

幾件事情值得一試的:

  • 「你必須配置配置store.type/config.php文件比phpsession以外的東西,或者該模塊將無法正常工作」 taken from line 17-19
  • 似乎重定向URL正在生成on the line 335
  • 檢查線路335和該External.php文件就看你有沒有做什麼樣的價值觀(你可以使用一些調試工具,像Xdebug
  • 整體調試代碼有助於瞭解在這個問題上更多的光,你所面臨的