我会将simplesamlphp
设置为3个不同的虚拟主机到本地主机。
1. http://idp-saml.com
2. http://sp-saml.com
3. http://api-saml.com
当我尝试使用idp-saml.com
连接sp-saml.com
时,它可以正常工作。
现在,我想将其与我自己的应用程序api-saml.com
集成。
为此,我将按照以下步骤操作:
在'authsources.php'上为sp-saml.com
创建“ authsouce”。
'sp1' => array(
'saml:SP',
'privatekey' => 'sp-saml.pem',
'certificate' => 'sp-saml.crt',
'entityID' => 'http://api-saml.com',
'idp' => 'http://idp-saml.com',
)
现在,转到Federation
页并单击“ SP1”元数据并复制SAML 2.0 Metadata XML
然后转到idp-saml.com
并打开metadata-converter.php
并解析SAML 2.0 Metadata XML
。
将shib13-sp-remote
和saml20-sp-remote
复制到metadata\shib13-sp-remote.php
虚拟主机上的metadata\saml20-sp-remote.php
和idp-saml.com
上,我可以在{下看到api-saml.com
federation
部分下的{1}}标签。
https://www.screencast.com/t/424rmDxRlRfV
SAML 2.0 SP Metadata (Trusted)
目录并创建api-saml.com
并添加以下代码 index.php
require_once('sp-saml/lib/_autoload.php');
$saml_auth = new SimpleSAML_Auth_Simple('sp1');
if ($saml_auth->isAuthenticated()) {
$attributes = $saml_auth->getAttributes();
var_dump($attributes);
}
else {
$saml_auth->requireAuth();
}
,然后转到http://api-saml.com
并要求我提供登录凭据。添加凭据后,它不会将我重定向回idp-saml.com
,其行为类似于无限重定向。您可以看到https://www.screencast.com/t/VGhDHE1j 答案 0 :(得分:0)
您的应用程序和authsource SP元数据应位于同一域中。您的第1步和第2步应该从http://api-saml.com/simplesaml/...
下载元数据,而不是从与您的应用不同的域下载元数据。
SP元数据包含有关授权Assertion Consumer Service
(ACS)网址的信息-您生成并随后加载到IdP的元数据仅将http://sp-saml.com下的路径列为合法返回网址。当您尝试使用来自其他域的authsource时,IdP会看到未授权的返回URL,将其忽略,而是使用不需要的元数据中的那个。