SimpleSAMLphp 在使用 SAML2 与 Microsoft Azure 目录 SSO 集成时显示未找到 saml2-acs.php(错误 404)
SimpleSAMLphp shows saml2-acs.php not found (error 404) when integrating with Microsoft Azure Directory SSO using SAML2
我从我的网站目录创建了一个 link,这样 https://resolute.organization.in/sso
指向 simplesaml 目录 /var/www/simplesamlphp/www
我的simpleSAML配置页面:
完整的 link https://resolute.organization.in/sso/module.php/saml/sp/saml2-acs.php/default-sp
在测试 身份验证源时显示 404 Not Found
--> default-sp.
我的config.php:
$config = ['baseurlpath' => 'https://resolute.organization.in/sso/',
'secretsalt' => 'my_secret_salt',
'auth.adminpassword' => 'my_admin_pass',
];
其余均为默认值 config.php
我的authsources.php:
$config = [
'admin' => [
'core:AdminPassword',
],
'default-sp' => [
'saml:SP',
'entityID' => 'https://resolute.organization.in/',
'idp' => 'https://sts.windows.net/{some-unique-key}/', //From metadata.xml for the app with entity ID in AD as *https://resolute.organization.in/*
'discoURL' => null,
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
'simplesaml.nameidattribute' => 'eduPersonTargetedID',
],
]
我的元数据数组在 saml20-idp-remote.php:
$metadata['https://sts.windows.net/{some-unique-key}/'] = array (
'entityid' => 'https://sts.windows.net/{some-unique-key}/',
'contacts' =>
array (
),
'metadata-set' => 'saml20-idp-remote',
'SingleSignOnService' =>
array (
0 =>
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
'Location' => 'https://login.microsoftonline.com/{some-unique-key}/saml2',
),
1 =>
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
'Location' => 'https://login.microsoftonline.com/{some-unique-key}/saml2',
),
),
'SingleLogoutService' =>
array (
0 =>
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
'Location' => 'https://login.microsoftonline.com/{some-unique-key}/saml2',
),
),
'ArtifactResolutionService' =>
array (
),
'NameIDFormats' =>
array (
),
'keys' =>
array (
0 =>
array (
'encryption' => false,
'signing' => true,
'type' => 'X509Certificate',
'X509Certificate' => '{really_long_key}',
),
),
);
我的联盟页面:
[显示元数据] link 也显示 404,在这种情况下 URL 栏中的 link 是:
https://resolute.organization.in/sso/module.php/saml/sp/metadata.php/default-sp?output=xhtml
IdP 元数据 link 正确显示元数据数组。
请帮助我解决我在这里遗漏的问题,因为我已经为此伤脑筋好几天了。
找出问题所在,它与 Nginx 服务器配置有关,无法在一个 link 中处理多个 php 页面。切换到 Apache,一切正常。
这取决于 php 如何处理 url 参数,并在将 php-fpm 与 NGINX 或 Apache mpm_worker/event 一起使用时发生。
为了解决这个问题,设置
cgi.fix_pathinfo=1
在 php.ini
我从我的网站目录创建了一个 link,这样 https://resolute.organization.in/sso
指向 simplesaml 目录 /var/www/simplesamlphp/www
我的simpleSAML配置页面:
完整的 link https://resolute.organization.in/sso/module.php/saml/sp/saml2-acs.php/default-sp
在测试 身份验证源时显示 404 Not Found
--> default-sp.
我的config.php:
$config = ['baseurlpath' => 'https://resolute.organization.in/sso/',
'secretsalt' => 'my_secret_salt',
'auth.adminpassword' => 'my_admin_pass',
];
其余均为默认值 config.php
我的authsources.php:
$config = [
'admin' => [
'core:AdminPassword',
],
'default-sp' => [
'saml:SP',
'entityID' => 'https://resolute.organization.in/',
'idp' => 'https://sts.windows.net/{some-unique-key}/', //From metadata.xml for the app with entity ID in AD as *https://resolute.organization.in/*
'discoURL' => null,
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
'simplesaml.nameidattribute' => 'eduPersonTargetedID',
],
]
我的元数据数组在 saml20-idp-remote.php:
$metadata['https://sts.windows.net/{some-unique-key}/'] = array (
'entityid' => 'https://sts.windows.net/{some-unique-key}/',
'contacts' =>
array (
),
'metadata-set' => 'saml20-idp-remote',
'SingleSignOnService' =>
array (
0 =>
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
'Location' => 'https://login.microsoftonline.com/{some-unique-key}/saml2',
),
1 =>
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
'Location' => 'https://login.microsoftonline.com/{some-unique-key}/saml2',
),
),
'SingleLogoutService' =>
array (
0 =>
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
'Location' => 'https://login.microsoftonline.com/{some-unique-key}/saml2',
),
),
'ArtifactResolutionService' =>
array (
),
'NameIDFormats' =>
array (
),
'keys' =>
array (
0 =>
array (
'encryption' => false,
'signing' => true,
'type' => 'X509Certificate',
'X509Certificate' => '{really_long_key}',
),
),
);
我的联盟页面:
[显示元数据] link 也显示 404,在这种情况下 URL 栏中的 link 是:
https://resolute.organization.in/sso/module.php/saml/sp/metadata.php/default-sp?output=xhtml
IdP 元数据 link 正确显示元数据数组。
请帮助我解决我在这里遗漏的问题,因为我已经为此伤脑筋好几天了。
找出问题所在,它与 Nginx 服务器配置有关,无法在一个 link 中处理多个 php 页面。切换到 Apache,一切正常。
这取决于 php 如何处理 url 参数,并在将 php-fpm 与 NGINX 或 Apache mpm_worker/event 一起使用时发生。
为了解决这个问题,设置
cgi.fix_pathinfo=1
在 php.ini