请耐心等待,这是我的第一个联合身份设置。我正在使用 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 控制面板中,我们可以测试身份验证源,它正确地重定向到他们的公司登录页面,接受用户名和密码,然后重定向回来......但是 URL它重定向回的是主应用程序 URL,而不是 SimpleSAMLphp 的管理面板,它列出了 SAML 响应中返回的所有属性。回顾我们第一次建立联盟时的笔记,他们需要我们在请求 SP 发起的 SSO 时提供断言消费者服务 URL ...我认为这是唯一缺少的部分,但我不确定如何配置 SimpleSAMLphp 来做到这一点。预期的行为是,对于任何需要 SSO 的 URL,应用程序将检查系统中是否存在 SAML 令牌,如果没有,则将用户重定向到客户端' s 登录页面,然后返回到用户在被拦截之前尝试访问的任何位置。我查看了 SimpleSAMLphp 的文档,但它们似乎……不完整;例如,他们似乎对 ACS URL 唯一提及的是 IdP 发起的请求。但它们也是 PHP SSO 世界中唯一的名称,所以我有点坚持使用它们,无论好坏。
所以我的问题是:无论是通过 ACS URL 还是其他方式,我如何控制用户通过客户端的 SSO 页面登录后被重定向到哪个 URL?