SimplesamlPHP无限重定向

时间:2018-07-30 06:35:56

标签: php saml simplesamlphp

我会将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集成。

为此,我将按照以下步骤操作:

  1. 在'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', )

  2. 现在,转到Federation页并单击“ SP1”元数据并复制SAML 2.0 Metadata XML

  3. 然后转到idp-saml.com并打开metadata-converter.php并解析SAML 2.0 Metadata XML

  4. shib13-sp-remotesaml20-sp-remote复制到metadata\shib13-sp-remote.php虚拟主机上的metadata\saml20-sp-remote.phpidp-saml.com上,我可以在{下看到api-saml.com federation部分下的{1}}标签。

https://www.screencast.com/t/424rmDxRlRfV

  1. 现在,转到SAML 2.0 SP Metadata (Trusted)目录并创建api-saml.com并添加以下代码

index.php

require_once('sp-saml/lib/_autoload.php');
  1. 现在,尝试访问$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

1 个答案:

答案 0 :(得分:0)

您的应用程序和authsource SP元数据应位于同一域中。您的第1步和第2步应该从http://api-saml.com/simplesaml/...下载元数据,而不是从与您的应用不同的域下载元数据。

SP元数据包含有关授权Assertion Consumer Service(ACS)网址的信息-您生成并随后加载到IdP的元数据仅将http://sp-saml.com下的路径列为合法返回网址。当您尝试使用来自其他域的authsource时,IdP会看到未授权的返回URL,将其忽略,而是使用不需要的元数据中的那个。