如何在simplesamlphp中关闭注销加密

时间:2013-09-12 10:57:14

标签: encryption single-sign-on logout saml simplesamlphp

来自simplesamlphp IdP的所有注销响应均已加密。我查看了simplesamlphp文档,但找不到任何关闭加密的选项。

(我已注销登录;但签名应独立于加密,并使用重定向绑定)

是否可以通过未加密的重定向绑定发送注销响应?或者由于某种原因始终默认开启?

2 个答案:

答案 0 :(得分:0)

在IdP远程元数据上定义的Paramenter 'assertion.encryption'

是否必须加密从此IdP收到的断言。默认值为FALSE。如果此选项设置为TRUE,则必须加密来自IdP的断言。未加密的断言将被拒绝。

请注意,此选项会覆盖SP配置中具有相同名称的选项。

参考:http://simplesamlphp.org/docs/stable/simplesamlphp-reference-idp-remote

saml20-idp-hosted.php中的参数'assertion.encryption'

是否应该加密从此IdP发送的断言。默认值为FALSE。

请注意,可以为SP远程元数据中的每个SP设置此选项。

参考:http://simplesamlphp.org/docs/stable/simplesamlphp-reference-idp-hosted

编辑添加解释

simpleSAMLphp使用函数encryptAssertion(modules / saml / lib / IdP / SAML2.php)来决定是否加密它处理的所有断言。此函数检查IdP / SP元数据文件上定义的'assertion.encryption'的值(如果未定义此参数,则断言未加密

private static function encryptAssertion(SimpleSAML_Configuration $idpMetadata,
            SimpleSAML_Configuration $spMetadata, SAML2_Assertion $assertion) {

            $encryptAssertion = $spMetadata->getBoolean('assertion.encryption', NULL);
            if ($encryptAssertion === NULL) {
                    $encryptAssertion = $idpMetadata->getBoolean('assertion.encryption', FALSE);
            }
            if (!$encryptAssertion) {
                    /* We are _not_ encrypting this assertion, and are therefore done. */
                    return $assertion;
            }

答案 1 :(得分:0)

问题出在其他方面。我只是重用了处理POST绑定的代码来处理Redirect绑定;但是使用Redirect绑定时,有效负载会缩小,因此POST的代码无法直接重用。