【发布时间】:2013-08-20 16:44:58
【问题描述】:
第一次尝试将 SAML 实现为 SP。我们决定尝试将 SimpleSAMLphp 与我们定制的 MVC 框架一起使用,因为我们认为这可以节省我们的时间。
我遇到的问题是我最终陷入无限循环或属性为空。
我已经配置了我的元数据并通过 SimpleSAMLphp 中的身份验证接口对其进行了测试。 idP 有一个与我们开始的地方不同的回发 URL 集,所以:
- 用户点击 domain.com/sso 我们创建
SimpleSAML_Auth_Simple('our-configured-sp')的新实例 - 致电
$as->requireAuth() - 客户端被重定向到 idP
- idP 将用户重定向回 domain.com/sso/saml
如果我们这样做,我们必须使用相同的代码(例如$as = new SimpleSAML_Auth_Simple('our-configured-sp'))创建一个新实例,而当我们这样做$as->getAttributes() 时,它是一个空数组。我们使用的是phpsessionstore.type,但是当我查看域上的cookie时,我只看到PHPSESSID和SimpleSAMLAuthToken
所以我们尝试将所有这些都放在一种方法中。如上所述,只有您从 domain.com/sso/saml 开始,但这次循环不断重复。用户访问我们的域,被重定向到 idP,然后被重定向回我们,然后永远返回到 idP。
最后我放弃了。我可以在$_POST['SAMLResponse'] 中得到回复,我可以通过base64_decode() 来查看它的内容。我将它放入SimpleXMLElement 对象中并能够使用它。问题是数据是加密的,现在我一直在尝试解密它。
我在这些节点中有数据,但不知道如何处理:
- samlp:Response->saml:EncryptedAssertion->EncryptedData->KeyInfo->EncryptedKey->X509Data->X509Certificate
- samlp:Response->saml:EncryptedAssertion->EncryptedData->KeyInfo->EncryptedKey->CipherData->CipherValue
- samlp:Response->saml:EncryptedAssertion->EncryptedData->CipherData->CipherValue
我不知道如何使用这些,但我可以验证 X509Certificate 是与我的私钥匹配的公钥。我尝试使用不同的键(或我认为是键)解码各种值,但无济于事。
- samlp:Response->saml:EncryptedAssertion->EncryptedData->KeyInfo->EncryptedKey->EncryptionMethod 建议
RSA1_5 - samlp:Response->saml:EncryptedAssertion->EncryptedData->EncryptionMethod 建议
AES256-CBC(我一直在尝试mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $data, "cbc", $iv);,尽管我实际上无法弄清楚我应该放入$key或$data)
理想情况下,我想让它在 SimpleSAMLphp 中完全运行,但老实说,我不知道问题出在哪里,所以我不知道如何对其进行排序。元数据如下所示:
$metadata = array(
'https://partner.com' => array(
'SingleSignOnService' => 'https://partner.com/sso/response',
'SingleLogoutService' => 'https://partner.com/sso/slo',
'assertion.encryption' => true,
'certificate' => partner.cer'
)
);
Authsources 有这个:
$config = array(
'our-configured-sp' => array(
'saml:SP',
'privatekey' => 'my.private.pem',
'certificate' => 'my.public.cert',
'idp' => 'https://partner.com',
'baseurlpath' => 'simplesaml/',
)
);
有什么帮助吗?最好让整个事情都使用 SimpleSAMLphp,但如果不是,我会就如何解密文件提供一些指导。
谢谢大家
【问题讨论】:
标签: php single-sign-on saml