在sps-initated SSO的simplesamlphp请求中包含断言使用者服务URL

时间:2014-07-03 22:35:31

标签: php single-sign-on simplesamlphp pingfederate

请耐心等待,这是我的第一个联合身份设置。我正在使用SimpleSAMLphp建立连接。

我正在尝试为使用PingFederate的客户端设置新的应用程序。我们不会在我们这边存储任何凭据,因此我认为这是使用远程IdP(来自客户端)的SP发起的SSO请求。我已经设置了config/authsources.php文件:

'client-sp' => array(
    'saml:SP',
    'privatekey' => 'saml.pem',
    'certificate' => 'saml.crt',
    'entityID' => NULL,
    'idp' => 'https://client.idp.url',
    'discoURL' => NULL,
    'signature.algorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256',
),

我得到了他们的元数据文件并设置了metadata/saml20-idp-remote.php文件:

$metadata['https://client.idp.url'] = array(
    'metadata-set' => 'saml20-idp-remote',
    'entityid' => 'https://client.idp.url',
    'SingleSignOnService' => array(
        0 => array(
            'Binding' => "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", 
            'Location' => "https://client.idp.url/idp/startSSO.ping?PartnerSpId=http://my.app.url",
        ),
        1 => array(
            'Binding' => "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect",
            'Location' => "https://client.idp.url/idp/startSSO.ping?PartnerSpId=http://my.app.url",
        ),
    ),
    'certData' => 'etc'
    'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified',
);

我们终于明白了,从SimpleSAMLphp控制面板中,我们可以测试auth源,并正确地重定向到他们的公司登录页面,接受用户名和密码,然后重定向回来......但是它重定向到的URL是主应用程序URL,而不是SimpleSAMLphp的管理面板,其中列出了SAML响应中返回的所有属性。从我们第一次设置联邦时回过头来看,他们需要我们在SP发起的SSO请求中提供断言消费者服务URL ...我认为这是唯一缺失的部分,但我不知道如何配置SimpleSAMLphp来做到这一点。预期的行为是,对于任何需要SSO的URL,应用程序将检查SAML令牌是否在系统中,如果不在,则将用户重定向到客户端的登录页面,然后返回到用户尝试访问的任何位置在他们被截获之前。我查看了SimpleSAMLphp的文档,但它们似乎......不完整;例如,他们似乎唯一提到ACS URL是在IdP发起的请求的情况下。但它们也是PHP SSO世界中唯一的名称,所以无论好坏,我都会坚持使用它们。

所以我的问题是:无论是通过ACS URL还是其他方式,如何通过客户端的SSO页面控制用户重定向到哪个URL?

1 个答案:

答案 0 :(得分:0)

绑定的URL错误:由于您的客户端使用PingFederate,因此URL应为:

'Location' => "https://client.idp.url/idp/SSO.saml2",

用于POST以及Redirect绑定。您应该根据从客户端获得的元数据仔细检查:如果该元数据是由PingFederate自动生成的(因为它应该),它将不包含指向"内部"的链接。 idp/startSSO.ping端点,但是公共SAML 2.0端点/idp/SSO.saml2