Skip to content

Commit c12a61a

Browse files
committed
Check for x509Cert of the IdP when loading settings, even if the security index was not provided
1 parent 635bd94 commit c12a61a

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

lib/Saml2/Settings.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -564,19 +564,19 @@ public function checkIdPSettings($settings)
564564
$errors[] = 'idp_slo_response_url_invalid';
565565
}
566566

567-
if (isset($settings['security'])) {
568-
$security = $settings['security'];
567+
$existsX509 = isset($idp['x509cert']) && !empty($idp['x509cert']);
568+
$existsMultiX509Sign = isset($idp['x509certMulti']) && isset($idp['x509certMulti']['signing']) && !empty($idp['x509certMulti']['signing']);
569+
$existsFingerprint = isset($idp['certFingerprint']) && !empty($idp['certFingerprint']);
570+
571+
if (!($existsX509 || $existsFingerprint || $existsMultiX509Sign)
572+
) {
573+
$errors[] = 'idp_cert_or_fingerprint_not_found_and_required';
574+
}
569575

570-
$existsX509 = isset($idp['x509cert']) && !empty($idp['x509cert']);
571-
$existsMultiX509Sign = isset($idp['x509certMulti']) && isset($idp['x509certMulti']['signing']) && !empty($idp['x509certMulti']['signing']);
576+
if (isset($settings['security'])) {
572577
$existsMultiX509Enc = isset($idp['x509certMulti']) && isset($idp['x509certMulti']['encryption']) && !empty($idp['x509certMulti']['encryption']);
573578

574-
$existsFingerprint = isset($idp['certFingerprint']) && !empty($idp['certFingerprint']);
575-
if (!($existsX509 || $existsFingerprint || $existsMultiX509Sign)
576-
) {
577-
$errors[] = 'idp_cert_or_fingerprint_not_found_and_required';
578-
}
579-
if ((isset($security['nameIdEncrypted']) && $security['nameIdEncrypted'] == true)
579+
if ((isset($settings['security']['nameIdEncrypted']) && $settings['security']['nameIdEncrypted'] == true)
580580
&& !($existsX509 || $existsMultiX509Enc)
581581
) {
582582
$errors[] = 'idp_cert_not_found_and_required';

tests/src/OneLogin/Saml/AuthRequestTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ public function setUp()
1515
$settings = new OneLogin_Saml_Settings;
1616
$settings->idpSingleSignOnUrl = 'http://stuff.com';
1717
$settings->spReturnUrl = 'http://sp.stuff.com';
18+
$cert = file_get_contents(TEST_ROOT . '/data/customPath/certs/sp.crt');
19+
$settings->idpPublicCertificate = $cert;
1820
$this->_settings = $settings;
1921
}
2022

tests/src/OneLogin/Saml2/SettingsTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ public function testLoadSettingsFromObject()
5353
$settingsObj = new OneLogin_Saml_Settings;
5454
$settingsObj->idpSingleSignOnUrl = 'http://stuff.com';
5555
$settingsObj->spReturnUrl = 'http://sp.stuff.com';
56+
$cert = file_get_contents(TEST_ROOT . '/data/customPath/certs/sp.crt');
57+
$settingsObj->idpPublicCertificate = $cert;
5658

5759
$settings = new OneLogin_Saml2_Settings($settingsObj);
5860

0 commit comments

Comments
 (0)