SimplesamlPHP无限重定向

SimplesamlPHP无限重定向,php,saml,simplesamlphp,Php,Saml,Simplesamlphp,我会将simplesamlphp安装到本地主机,作为3个不同的虚拟主机 1. http://idp-saml.com 2. http://sp-saml.com 3. http://api-saml.com 当我尝试使用sp saml.com连接idp saml.com时,它工作正常 现在,我想将它与我自己的应用程序集成api saml.com 为此,我将遵循以下步骤: 在“authsources.php”上创建“authsource”到sp saml.com。 “sp1”=>数组( “sa

我会将
simplesamlphp
安装到本地主机,作为3个不同的虚拟主机

1. http://idp-saml.com
2. http://sp-saml.com
3. http://api-saml.com
当我尝试使用
sp saml.com
连接
idp saml.com
时,它工作正常

现在,我想将它与我自己的应用程序集成
api saml.com

为此,我将遵循以下步骤:

  • 在“authsources.php”上创建“authsource”到
    sp saml.com
    
    “sp1”=>数组(
    “saml:SP”,
    “privatekey”=>“sp saml.pem”,
    '证书'=>'sp saml.crt',
    'entityID'=>'http://api-saml.com',
    'idp'=>'http://idp-saml.com',
    )
    

  • 现在,转到
    Federation
    页面,单击“SP1”元数据并复制
    SAML2.0元数据XML

  • 然后转到
    idp saml.com
    打开
    metadata converter.php
    并解析
    saml2.0元数据XML

  • shib13 sp remote
    saml20 sp remote
    复制到
    metadata\shib13 sp remote.php
    metadata\saml20 sp remote.php
    上的
    idp saml.com
    虚拟主机,我可以看到
    api saml.com
    下的
    federation
    选项卡下的
    saml2.0 sp元数据(受信任)
    部分

  • 现在,转到
    api saml.com
    目录,创建
    index.php
    并添加以下代码
  • require_once('sp-saml/lib/_autoload.php')

  • 现在,尝试访问
    http://api-saml.com
    它会转到
    idp saml.com
    并询问我的登录凭据。添加凭据后,它不会将我重定向回
    api saml.com
    ,其行为类似于无限重定向。你可以看到

  • 您的应用程序和authsource SP元数据应位于同一域上。您的步骤1和2应该从
    http://api-saml.com/simplesaml/...
    而不是来自与应用程序不同的域


    SP元数据包含有关授权的
    断言消费者服务(ACS)URL的信息,您正在生成并加载到IdP中的元数据仅将下面的路径列为合法返回URL。当您尝试从其他域使用authsource时,IdP会看到未经授权的返回url,忽略它,而是使用元数据中您不需要的子域。

    我同意您的意见,但现在我想在同一台服务器上再创建两个子域
    beta.api saml.com
    &
    alpha.api saml.com
    ,那么我将怎么做?我需要在这两个子域上安装
    simplesaml
    ,还是有其他方法?
    $saml_auth = new SimpleSAML_Auth_Simple('sp1');
    
    if ($saml_auth->isAuthenticated()) {
        $attributes = $saml_auth->getAttributes();    
        var_dump($attributes);    
    }
    else {
        $saml_auth->requireAuth();
    }