首次尝试将SAML实施为SP。我们决定尝试将SimpleSAMLphp与我们的定制MVC框架一起使用,因为我们认为它可以节省我们的时间。
我遇到的问题是我最终陷入无限循环或属性为空。
我已经配置了我的元数据,并在SimpleSAMLphp中通过身份验证界面对其进行了测试。 idP的回发网址设置与我们开始的地址不同,因此:
SimpleSAML_Auth_Simple('our-configured-sp')
$as->requireAuth()
如果我们这样做,我们必须使用相同的代码(例如$as = new SimpleSAML_Auth_Simple('our-configured-sp')
)创建一个新实例,当我们执行$as->getAttributes()
时,它是一个空数组。我们正在使用phpsession
store.type
,但当我查看域中的Cookie时,我只看到PHPSESSID
和SimpleSAMLAuthToken
所以我们尝试将它们全部放入一个方法中。如上所述,只有你从domain.com/sso/saml开始,除非这次循环不断重复。用户点击我们的域名,被重定向到idP,然后重定向回我们,然后回到idP,永远。
最终我放弃了。我可以在$_POST['SAMLResponse']
中获得回复,我可以base64_decode()
查看它的内容。我将它放入SimpleXMLElement
对象中,并能够使用它。问题是数据是加密的,现在我一直试图解密它。
我在这些节点中有数据,但不知道如何处理它:
我不知道如何使用其中的每一个,但我可以验证X509Certificate
是与我的私钥匹配的公钥。我尝试使用不同的键(或者我认为是键)解码各种值无济于事。
RSA1_5
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一起使用,但如果没有,我会就如何解密文件采取一些指导。
谢谢大家
答案 0 :(得分:0)
请检查One Login SAML php库,它有详细记录和编码。您可以轻松地使用它来处理响应,并且getAttributes可以执行您想要的操作。
我知道这个问题已经过时了,但它可能有助于某些人继续寻找相同的问题。