2016-04-06 13 views
0

Wenn Sie eine neue App zum Zugriff auf SAML hinzufügen, stehe ich vor diesem Problem.Zu viele Redirects in simplesamlphp

SSOService.php: https://saml.testing.net/www/saml2/idp/SSOService.php?spentityid=newapp&cookieTime=1459920375

net 1 GET ::

in meinem lokalen ERR_TOO_MANY_REDIRECTS Ich habe kein Problem mit Blick auf, aber wenn ich die Codes zu Staging-Server zu kopieren, dann zeigt ERR_TOO_MANY_REDIRECTS-Fehler an, leitet Weiterleitungen ein und kann die SAML-Anmeldeseite nicht anzeigen. Würden die Staging-Server mit Load Balancers den Fehler verursachen?

Danke.

Update:

$config = array(
'baseurlpath'  => 'https://saml.testing.net/', 
'certdir'  => '/etc/test/sslcerts/', 
'tempdir'  => '/tmp', 
'datadir'  => 'data/', 
'auth.adminpassword'  => '1234567', 
'admin.protectindexpage' => TRUE, 
'admin.protectmetadata'  => TRUE, 
'secretsalt'  => 'xxxxxxxxx', 
'timezone'  => NULL, 

// logging related options 
'loggingdir'  => '/var/log/simplesamlphp/', 
'logging.level'  => LOG_WARNING, 
'logging.logfile' => 'simplesaml_' .date("Ymd") . '.log', 
'debug'   => true, 
'showerrors'  => true, 
'logging.handler' => 'file', 
'logging.facility' => LOG_USER, 
'logging.processname' => 'simplesaml', 
'debug.validatexml' => FALSE, 
'enable.saml20-idp' => TRUE, 
'enable.shib13-idp' => FALSE, 
'enable.adfs-idp' => FALSE, 
'enable.wsfed-sp' => FALSE, 
    'enable.authmemcookie' => TRUE, 
'session.duration'  => 2*(60*60), 
'session.requestcache'  => 4*(60*60), 
'session.cookie.lifetime' => 0, 
'session.cookie.path'  => '/', 
'session.phpsession.cookiename' => 'SimpleSAMLSessionID', 
'session.cookie.name'  => 'SimpleSAMLSessionID', 
'session.cookie.domain'  => NULL, 
'session.cookie.secure'  => FALSE, 
'session.cookie.lifetime' => 0, 
'session.datastore.timeout' => 4*(60*60), 
'session.state.timeout'  => (60*60), 
'session.phpsession.savepath' => NULL, 
'session.phpsession.httponly' => FALSE, 
'session.disable_fallback' => FALSE, 
'session.authtoken.cookiename' => 'SimpleSAMLAuthToken', 
'session.rememberme.enable' => FALSE, 
'session.rememberme.checked' => FALSE, 
'session.rememberme.lifetime' => 1209600, // 14 days 
'enable.http_post'  => FALSE, 
'language.available'  => array('en'), 
'language.default'  => 'en', 
'attributes.extradictionary' => NULL, 
'theme.use'   => 'oldtheme:abcdef', 
'attributes.extradictionary' => NULL, 
'default-wsfed-idp'  => 'urn:federation:pingfederate:localhost', 
'idpdisco.enableremember' => TRUE, 
'idpdisco.rememberchecked' => TRUE, 
'idpdisco.validate'  => TRUE, 
'idpdisco.extDiscoveryStorage' => NULL, 
'idpdisco.layout'  => 'dropdown', 
'shib13.signresponse'  => TRUE, 
'authproc.idp'  => array(
    10 => "frogauth:LogHandler", 
    30 => 'core:LanguageAdaptor', 
    45 => array('class' => 'core:StatisticsWithAttribute', 'attributename' => 'realm', 'type' => 'saml20-idp-SSO'), 
    50 => 'core:AttributeLimit', 
    99 => 'core:LanguageAdaptor', 
    100 => "newauth:ToLogin", 
    101 => "newauth:VerifyLogin", 
    99 => 'core:LanguageAdaptor', 
), 

'authproc.sp'  => array(
    99 => 'core:LanguageAdaptor', 
), 
'metadata.sources' => array(
    array('type' => 'flatfile'), 
), 

'store.type' => 'memcache', 
'memcache_store.servers' => array(
      array(
        array('hostname' => '10.11.11.11'), 
      ), 
), 
'memcache_store.expires' => 36 * (60*60), 
'metadata.sign.enable'  => FALSE, 
'metadata.sign.privatekey' => NULL, 
'metadata.sign.privatekey_pass' => NULL, 
'metadata.sign.certificate' => NULL, 
'proxy'   => null, 
'xframe_options'=> array('enable' => TRUE, 'trusted_sites' => array()), 
'session.duration'  => 2*(60*60), 
'theme.use'  => "newtheme:multitheme", 
); 

saml20-sp-remote.php

$metadata['newapp'] = array(
    'AssertionConsumerService'  => 'https://www.newapp.com/mobile/saml', 
    'SingleLogoutService'   => 'https://www.newapp.com/mobile/logout', 
    'Theme'   => 'mobile', 
); 
+0

ohne Prüfcode kann niemand lösen. –

+0

Überprüfen Sie die Header-Funktion und verwenden Sie exit(); nach jeder Header-Funktion. Es könnte der Grund sein. – C2486

+1

Es wäre einfacher zu helfen, wenn Sie die Konfigurationen auf den Staging-Servern hinzufügen könnten. Die Weiterleitungs-URL, die gesetzt ist usw. Ansonsten ist die beste Vermutung, dass eine der Umleitungen falsch eingestellt ist, was zu einer Endlosschleife führt. – Boon

Antwort

0

Schließen der Verbindung, wenn der Seiteninhalt endet.

0

Wenn es überhaupt hilft, immer wenn dies in unserem Setup passiert ist, weil etwas mit den Cookies schief gelaufen ist.

Der Benutzer wird nicht als am Dienst angemeldet angezeigt, da die Cookies nicht richtig eingestellt sind. Daher werden sie zum idp umgeleitet, wo sie als eingeloggt angezeigt und zum Dienst zurückgeleitet werden. und wiederholen.

Grundsätzlich denkt Ihr Dienst, dass sie nicht eingeloggt sind, saml denkt, dass sie es sind; und sie geben beide den Bock weiter!

0

Ich habe gerade in einem ähnlichen Redirect Problem aufgetreten. SimpleSAMLPHP würde geladen werden, aber wenn Sie versuchen, sich als Administrator anzumelden, würde es in eine Endlosschleife gehen und die Seiten loginuserpass.php und as_login.php laden (ursprünglich umgeleitet von /module.php/core/login-admin.php?ReturnTo=XXX) .

Nach einer Menge von Debugging stellte ich fest, dass das Problem tatsächlich Varnish-Caching war, das den Sitzungsstatus von geladen wurde zu stoppen. Dies ist unabhängig davon, welcher Sitzungsspeicher ausgewählt wurde (phphesion, memcache oder sql).

Die Deaktivierung der Lackzwischenspeicherung auf den SimpleSAMLPHP-Pfaden hat das Problem für mich behoben.

Ich hoffe, dies hilft jedem anderen mit diesem Problem.