我有一个问题
我连接了SP和IDP,除了一件事外一切正常:SP向iDp发送GET请求。和iDp要求使用POST协议发送数据。
这是SP
'spname' => array(
'saml:SP',
'ProtocolBinding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
'idp' => 'https://someurl.com/SomeSSO.aspx',
'acs.Bindings' => array(
'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
'urn:oasis:names:tc:SAML:1.0:profiles:browser-post',
),
'discoURL' => NULL,
'privatekey' => 'some.pem',
'certificate' => 'some.crt'
),
这是iDp remote:
$metadata['https://something.com/SomeSSO.aspx'] = array(
'name' => array(
'en' => 'Something',
'no' => 'Something',
),
'description' => 'Something',
'SingleSignOnService' => 'https://xxxxxx.com/SomeSSO.aspx?ou_id=-850',
'SingleLogoutService' => 'https://xxxxxx.com/SomeSSO.aspx?ou_id=-850',
'certFingerprint' => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
);
有人可以帮助我吗?
答案 0 :(得分:0)
您已陈述过您的问题,但没有实际问题。
如果您希望IdP也使用GET,我相信您需要在协议绑定属性中使用HTTP-POST到HTTP-GET。
答案 1 :(得分:0)
要将SimpleSAMLphp配置为使用HTTP POST而不是GET,您需要修改远程IdP配置以明确指定HTTP POST绑定,这样的事情应该有效:
$metadata['https://something.com/SomeSSO.aspx'] = array(
'name' => array(
'en' => 'Something',
'no' => 'Something',
),
'description' => 'Something',
'SingleSignOnService' => array (
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
'Location' => 'https://xxxxxx.com/SomeSSO.aspx?ou_id=-850',
),
),
'SingleLogoutService' => array (
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
'Location' => 'https://xxxxxx.com/SomeSSO.aspx?ou_id=-850',
),
),
'certFingerprint' => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
);
SimpleSAMLphp包含一个元数据解析器,它将IdP配置细节转换为SimpleSAMLphp所需的格式。 SimpleSAMLphp文档中简要提到了此功能:https://simplesamlphp.org/docs/1.8/simplesamlphp-sp#section_2。
如果远程IdP以XML格式提供元数据,请考虑使用元数据解析器生成远程IdP配置,因为元数据解析器将自动为远程IdP端点生成正确的绑定。