Php SimpleSAML-找不到实体ID为的IdP的元数据
我正在使用SimpleSAMLPHP,并已成功设置了>40个SSO连接。就在最近,我的一个SSO连接在用户进行身份验证时开始抛出以下错误:Php SimpleSAML-找不到实体ID为的IdP的元数据,php,saml,saml-2.0,simplesamlphp,Php,Saml,Saml 2.0,Simplesamlphp,我正在使用SimpleSAMLPHP,并已成功设置了>40个SSO连接。就在最近,我的一个SSO连接在用户进行身份验证时开始抛出以下错误: Backtrace: 1 www/_include.php:45 (SimpleSAML_exception_handler) 0 [builtin] (N/A) Caused by: SimpleSAML_Error_Exception: Could not find the metadata of an IdP with entity ID 'urn:c
Backtrace:
1 www/_include.php:45 (SimpleSAML_exception_handler)
0 [builtin] (N/A)
Caused by: SimpleSAML_Error_Exception: Could not find the metadata of an IdP with entity ID 'urn:company.com:spfed:1.0:entityid:MANPROD:test'
Backtrace:
6 modules/saml/lib/Auth/Source/SP.php:134 (sspmod_saml_Auth_Source_SP::getIdPMetadata)
5 modules/saml/lib/Auth/Source/SP.php:327 (sspmod_saml_Auth_Source_SP::startSSO)
4 modules/saml/lib/Auth/Source/SP.php:430 (sspmod_saml_Auth_Source_SP::authenticate)
3 lib/SimpleSAML/Auth/Source.php:193 (SimpleSAML_Auth_Source::initLogin)
2 lib/SimpleSAML/Auth/Simple.php:147 (SimpleSAML_Auth_Simple::login)
1 modules/core/www/authenticate.php:36 (require)
0 www/module.php:135 (N/A)
我的saml20 idp remote.php
文件如下所示:
$metadata['urn:company.com:spfed:1.0:entityid:MANPROD:test'] = array (
'name' => [
'en' => 'company1'
],
'entityid' => 'urn:company.com:spfed:1.0:entityid:MANPROD:test',
'description' =>
array (
'en' => 'Company 1',
),
'OrganizationDisplayName' =>
array (
'en' => 'Company 1',
),
'url' =>
array (
'en' => 'http://www.company.com/',
),
'OrganizationURL' =>
array (
'en' => 'http://www.company.com/',
),
'metadata-set' => 'saml20-idp-remote',
'expire' => 1403713599,
'sign.authnrequest' => true,
'SingleSignOnService' =>
array (
0 =>
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
'Location' => 'https://company.com/saml2sso',
),
),
'SingleLogoutService' =>
array (
),
'ArtifactResolutionService' =>
array (
),
'NameIDFormats' =>
array (
0 => 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified',
),
'keys' =>
array (
0 =>
array (
'encryption' => false,
'signing' => true,
'type' => 'X509Certificate',
'X509Certificate' => '...',
),
),
);
我应该注意,我屏蔽了x509证书,元数据是直接从元数据转换器转换而来的
我的authsources.php
文件如下所示:
'company1' => [
'saml:SP',
'privatekey' => 'server.pem',
'certificate' => 'server.crt',
'entityID' => null,
'idp' => 'urn:company.com:spfed:1.0:entityid:MANPROD:test',
'discoURL' => null,
],
您可以清楚地看到我的$metadata
键与entityid
和authsourcesidp
相匹配,请参见说明
更奇怪的是,当我查看我的idp列表时,
company1
idp甚至没有出现在下拉列表中,很可能是因为它找不到元数据。我想我想知道为什么它找不到元数据?这是冒号和句号的问题吗?我的元数据有什么奇怪的地方吗?我运行了一个php语法检查程序,它在两个文件中都没有发现任何问题。只是找到了错误。如果'expire'=>1403713599,
已设置且未更新,则它将抛出元数据未找到错误
通过注释掉saml20 idp remote.php中的expire
数组索引,我能够解决这个问题