设置simpleSAMLphp SP发送POST请求

时间:2014-05-14 22:39:57

标签: simplesamlphp

我有一个问题

我连接了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',
);

有人可以帮助我吗?

2 个答案:

答案 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端点生成正确的绑定。