[英]How to decode SAML Response and get the attribute values sent by Idp in PHP
[英]How to decode encrypted SAML response from idP with PHP?
第一次尝试将SAML实施为SP。 我们决定尝试在定制的MVC框架中使用SimpleSAMLphp,因为我们认为这样做可以节省时间。
我遇到的问题是我陷入无限循环或属性为空。
我已经配置了元数据,并从SimpleSAMLphp中的authenticate接口对其进行了测试。 idP的回发URL集与我们开始时的URL集不同,因此:
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);
尽管我实际上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一起使用,但是如果没有,我将对如何解密文件采取一些指导。
感谢大家
请检查一个登录 SAML php库,该文件已被很好地记录和编码。 您可以轻松地使用它来处理response和getAttributes做您想要的事情。
我知道这个问题很旧,但这可能会帮助仍在寻找相同问题的人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.