simplesamlphp中的重定向过多

时间:2016-04-06 05:49:40

标签: php simplesamlphp

添加新应用以访问saml时,我遇到了这个问题。

  

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

     

净:: ERR_TOO_MANY_REDIRECTS

在我的本地我没有遇到任何问题,但是当我将代码复制到登台服务器时,它会显示ERR_TOO_MANY_REDIRECTS错误,保持重定向,并且无法显示saml登录页面。具有负载平衡器的临时服务器会导致错误吗?

感谢。

更新

$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',
);

5 个答案:

答案 0 :(得分:5)

就我而言,SameSite=None cookie 属性是罪魁祸首。 SameSite=None cookie 必须与 secure 属性一起使用!

enter image description here

解决方案:

'session.cookie.secure' => true // config.php

如果您的服务在反向代理之后运行并且不是通过 https 运行,您还需要定义 URL 架构:

'baseurlpath' => 'https://my.url.com/<path_to_simple_saml>' // indicating the https schema (config.php)

答案 1 :(得分:1)

这里还有另一种可能的解决方案(搜索几个小时后为我工作,并且在更正ItemsFragmentArgs 后为我工作):进入Firefox开发人员工具(或您的选择),然后在“网络存储”中删除所有cookie。

答案 2 :(得分:0)

页面内容结束时关闭连接。

答案 3 :(得分:0)

如果它有帮助,只要在我们的设置中发生这种情况,就是因为饼干出了问题。

由于未正确设置Cookie,因此未将用户视为已登录该服务。因此,它们被重定向到idp,此时它们显示为已登录并重定向回服务;并重复。

基本上你的服务认为他们没有登录,saml认为他们是;他们都不断推卸责任!

答案 4 :(得分:0)

我刚遇到类似的重定向问题。 SimpleSAMLPHP可以正常加载但是当尝试以管理员身份登录时,它将进入无限循环,加载loginuserpass.php和as_login.php页面(最初从/module.php/core/login-admin.php?ReturnTo=XXX重定向)

经过大量调试后,我发现问题实际上是Varnish缓存,它阻止了会话状态的加载。无论选择什么会话存储(phpsession,memcache或sql),都会发生这种情况。

在SimpleSAMLPHP路径上禁用varnish缓存为我解决了这个问题。

希望这可以帮助其他人解决这个问题。