$extension->
addAuthenticatorFactory(new LoginThrottlingFactory());
$extension->
addAuthenticatorFactory(new LoginLinkFactory());
$extension->
addAuthenticatorFactory(new AccessTokenFactory([ new ServiceTokenHandlerFactory(),
new OidcUserInfoTokenHandlerFactory(),
new OidcTokenHandlerFactory(),
]));
$extension->
addUserProviderFactory(new InMemoryFactory());
$extension->
addUserProviderFactory(new LdapFactory());
$container->
addCompilerPass(new AddExpressionLanguageProvidersPass());
$container->
addCompilerPass(new AddSecurityVotersPass());
$container->
addCompilerPass(new AddSessionDomainConstraintPass(), PassConfig::TYPE_BEFORE_REMOVING
);
$container->
addCompilerPass(new CleanRememberMeVerifierPass());
$container->
addCompilerPass(new RegisterCsrfFeaturesPass());
$container->
addCompilerPass(new RegisterTokenUsageTrackingPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, 200
);
$container->
addCompilerPass(new RegisterLdapLocatorPass());
$container->
addCompilerPass(new RegisterEntryPointPass());
// must be registered after RegisterListenersPass (in the FrameworkBundle)
$container->
addCompilerPass(new RegisterGlobalSecurityEventListenersPass(), PassConfig::TYPE_BEFORE_REMOVING, -200
);
// execute after ResolveChildDefinitionsPass optimization pass, to ensure class names are set
$container->
addCompilerPass(new SortFirewallListenersPass(), PassConfig::TYPE_BEFORE_REMOVING
);
$container->
addCompilerPass(new ReplaceDecoratedRememberMeHandlerPass(), PassConfig::TYPE_OPTIMIZE
);