![](/img/trans.png)
[英]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.