*/
class Saml2Service
{
- protected $config;
- protected $registrationService;
- protected $loginService;
- protected $groupSyncService;
+ protected array $config;
+ protected RegistrationService $registrationService;
+ protected LoginService $loginService;
+ protected GroupSyncService $groupSyncService;
- /**
- * Saml2Service constructor.
- */
public function __construct(
RegistrationService $registrationService,
LoginService $loginService,
*/
public function metadata(): string
{
- $toolKit = $this->getToolkit();
+ $toolKit = $this->getToolkit(true);
$settings = $toolKit->getSettings();
$metadata = $settings->getSPMetadata();
$errors = $settings->validateMetadata($metadata);
* @throws Error
* @throws Exception
*/
- protected function getToolkit(): Auth
+ protected function getToolkit(bool $spOnly = false): Auth
{
$settings = $this->config['onelogin'];
$overrides = $this->config['onelogin_overrides'] ?? [];
}
$metaDataSettings = [];
- if ($this->config['autoload_from_metadata']) {
+ if (!$spOnly && $this->config['autoload_from_metadata']) {
$metaDataSettings = IdPMetadataParser::parseRemoteXML($settings['idp']['entityId']);
}
$spSettings = $this->loadOneloginServiceProviderDetails();
$settings = array_replace_recursive($settings, $spSettings, $metaDataSettings, $overrides);
- return new Auth($settings);
+ return new Auth($settings, $spOnly);
}
/**
$req->assertSee(url('/saml2/acs'));
}
+ public function test_metadata_endpoint_loads_when_autoloading_with_bad_url_set()
+ {
+ config()->set([
+ 'saml2.autoload_from_metadata' => true,
+ 'saml2.onelogin.idp.entityId' => 'http://192.168.1.1:9292',
+ 'saml2.onelogin.idp.singleSignOnService.url' => null,
+ ]);
+
+ $req = $this->get('/saml2/metadata');
+ $req->assertOk();
+ $req->assertHeader('Content-Type', 'text/xml; charset=UTF-8');
+ $req->assertSee('md:EntityDescriptor');
+ }
+
public function test_onelogin_overrides_functions_as_expected()
{
$json = '{"sp": {"assertionConsumerService": {"url": "https://example.com/super-cats"}}, "contactPerson": {"technical": {"givenName": "Barry Scott", "emailAddress": "
[email protected]"}}}';