【问题标题】:"State information lost" in SimpleSamlphpSimpleSamlphp 中的“状态信息丢失”
【发布时间】:2017-09-15 10:13:25
【问题描述】:

我在 SimpleSamlphp 中收到错误状态信息丢失“状态信息丢失”。 使用 sprint-security 作为 SP,并在 Simplesamlphp 上配置 Idp。 然后,通过浏览器将SP网页重定向到Idp就可以了,但是登录用户名和密码后,我得到了一个错误, “状态信息丢失”。 ```

Apr 19 08:52:28 simplesamlphp DEBUG [bc5df4b2c1] array (
  'id' => 'a3a41e7aia439d7371j5e742e35jhi',
  'url' => NULL,
)
Apr 19 08:52:28 simplesamlphp DEBUG [bc5df4b2c1] Ron====sid===end
Apr 19 08:52:28 simplesamlphp DEBUG [bc5df4b2c1] NULL
Apr 19 08:52:28 simplesamlphp DEBUG [bc5df4b2c1] Ron====url===end
Apr 19 08:52:28 simplesamlphp DEBUG [bc5df4b2c1] Ron====state:NULL
Apr 19 08:52:28 simplesamlphp ERROR [bc5df4b2c1] SimpleSAML_Error_NoState: NOSTATE
Apr 19 08:52:28 simplesamlphp ERROR [bc5df4b2c1] Backtrace:
Apr 19 08:52:28 simplesamlphp ERROR [bc5df4b2c1] 2 /var/simplesamlphp/lib/SimpleSAML/Auth/State.php:274 (SimpleSAML_Auth_State::loadState)
Apr 19 08:52:28 simplesamlphp ERROR [bc5df4b2c1] 1 /var/simplesamlphp/modules/saml/www/sp/saml2-acs.php:91 (require)
Apr 19 08:52:28 simplesamlphp ERROR [bc5df4b2c1] 0 /var/simplesamlphp/www/module.php:137 (N/A)
Apr 19 08:52:28 simplesamlphp ERROR [bc5df4b2c1] Error report with id f9c150bb generated.

``` 我发现 stateID 是 SP 发送的。然后在 Idp 方面,现在日志显示会话包含两个有效的 phpsession cookie 和一个 authtoken。但是这两个 Id 都无法与响应中的“RequestId”或“InResponseTo”匹配。 我只是被困在这里。它是如何发生的?任何人都可以帮忙吗?提前致谢。

【问题讨论】:

    标签: php saml-2.0 simplesamlphp


    【解决方案1】:

    在我的案例中,我发现 php 的逻辑与 SP php 脚本一致,更明显的是,当我手动更改“stateId”时,出现如下错误: SimpleSAML_Error_Exception:此 SP [https://domainname/simplesaml/module.php/saml/sp/metadata.php/default-sp] 不是断言的有效受众。候选人是:[com:vdenotaris:spring:sp]

    这很奇怪,出乎我的意料。然后我检查了文件 “metadata/saml20-sp-remote.php”SimpleSAMLphp 文档说它用于将 SP 元数据添加到 Idp 配置中以使其知道。 最后,我发现我在这里填充了错误的 SP 元数据。 如果是这样就出错了:

    $metadata['com:vdenotaris:spring:sp'] = array(
            'AssertionConsumerService' => 'https://domainname/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',
            'SingleLogoutService' => 'https://domainname/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp',
    );
    

    应该为 AssertionConsumerService 和 SingleLogoutService 分配您的 SP 中的 URL,因为它们是 SP 上的服务。 所以应该是这样的:

    $metadata['com:vdenotaris:spring:sp'] = array(
            'AssertionConsumerService' => 'https://SPonRonSever:8443/prj/saml/SSO',
            'SingleLogoutService' => 'https://SPonRonSever:8443/prj/saml/SingleLogout',
    );
    

    然后当你在浏览器地址栏输入“https://SPonRonSever:8443/prj”,就可以跳转到Idp提供的登录页面,认证后就可以访问你想要的网页了。

    【讨论】:

      猜你喜欢
      • 2016-11-20
      • 2016-05-05
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多