diff --git a/config/packages/security.yaml b/config/packages/security.yaml index c9ec5a22dab..9b4c7785435 100644 --- a/config/packages/security.yaml +++ b/config/packages/security.yaml @@ -52,9 +52,9 @@ security: authentication_required_handler: sulu_security.two_factor_authentication_required_handler success_handler: sulu_security.two_factor_authentication_success_handler failure_handler: sulu_security.two_factor_authentication_failure_handler - access_token: - token_handler: sulu_security.single_sign_on_token_handler - token_extractors: sulu_security.single_sign_on_token_extractor +# access_token: +# token_handler: sulu_security.single_sign_on_token_handler +# token_extractors: sulu_security.single_sign_on_token_extractor # website: # pattern: ^/ diff --git a/src/Sulu/Bundle/SecurityBundle/DependencyInjection/SuluSecurityExtension.php b/src/Sulu/Bundle/SecurityBundle/DependencyInjection/SuluSecurityExtension.php index 7ca2771459a..37130d3c18b 100644 --- a/src/Sulu/Bundle/SecurityBundle/DependencyInjection/SuluSecurityExtension.php +++ b/src/Sulu/Bundle/SecurityBundle/DependencyInjection/SuluSecurityExtension.php @@ -32,6 +32,7 @@ use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\HttpKernel\DependencyInjection\Extension; +use Symfony\Component\Security\Http\AccessToken\AccessTokenExtractorInterface; use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface; /** @@ -111,22 +112,29 @@ public function load(array $configs, ContainerBuilder $container) $container->setParameter('sulu_security.has_single_sign_on_providers', false); - if (\array_key_exists('single_sign_on', $config) - && \array_key_exists('providers', $config['single_sign_on'])) { - $container->setParameter( - 'sulu_security.has_single_sign_on_providers', - \count($config['single_sign_on']['providers']) > 0, - ); + if (!\array_key_exists('single_sign_on', $config) || !\array_key_exists('providers', $config['single_sign_on'])) { + return; + } - foreach ($config['single_sign_on']['providers'] as $domain => $providerConfig) { - $definition = new Definition(); - $definition->setFactory([new Reference('sulu_security.single_sign_on_adapter_factory'), 'createAdapter']); - $definition->setClass(SingleSignOnAdapterInterface::class); - $definition->setArguments([$providerConfig['dsn'], $providerConfig['user_role'] ?? null]); - $definition->addTag('sulu_security.single_sign_on_adapter', ['domain' => $domain]); + if (!\interface_exists(AccessTokenExtractorInterface::class)) { + throw new \RuntimeException('The symfony/security-http package is required to use the SuluSecurityBundle. At least symfony/security-http 6.2 is required.'); + } - $container->setDefinition('sulu_security.single_sign_on_adapter_' . \str_replace('.', '_', $domain), $definition); - } + $loader->load('single_sign_on.xml'); + + $container->setParameter( + 'sulu_security.has_single_sign_on_providers', + \count($config['single_sign_on']['providers']) > 0, + ); + + foreach ($config['single_sign_on']['providers'] as $domain => $providerConfig) { + $definition = new Definition(); + $definition->setFactory([new Reference('sulu_security.single_sign_on_adapter_factory'), 'createAdapter']); + $definition->setClass(SingleSignOnAdapterInterface::class); + $definition->setArguments([$providerConfig['dsn'], $providerConfig['user_role'] ?? null]); + $definition->addTag('sulu_security.single_sign_on_adapter', ['domain' => $domain]); + + $container->setDefinition('sulu_security.single_sign_on_adapter_' . \str_replace('.', '_', $domain), $definition); } } diff --git a/src/Sulu/Bundle/SecurityBundle/Resources/config/single_sign_on.xml b/src/Sulu/Bundle/SecurityBundle/Resources/config/single_sign_on.xml new file mode 100644 index 00000000000..a72aa7d6a5d --- /dev/null +++ b/src/Sulu/Bundle/SecurityBundle/Resources/config/single_sign_on.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + %sulu_core.translations% + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Sulu/Bundle/SecurityBundle/SingleSignOn/SingleSignOnLoginRequestSubscriber.php b/src/Sulu/Bundle/SecurityBundle/SingleSignOn/SingleSignOnLoginRequestSubscriber.php index 5f956584d98..bca592c061c 100644 --- a/src/Sulu/Bundle/SecurityBundle/SingleSignOn/SingleSignOnLoginRequestSubscriber.php +++ b/src/Sulu/Bundle/SecurityBundle/SingleSignOn/SingleSignOnLoginRequestSubscriber.php @@ -1,7 +1,5 @@ markTestSkipped('This test requires symfony/security-http ^6.2'); + } + $this->singleSignOnAdapterProvider = $this->prophesize(SingleSignOnAdapterProvider::class); $this->tokenExtractor = new SingleSignOnTokenExtractor(