in tomee/tomee-security/src/main/java/org/apache/tomee/security/cdi/TomEESecurityExtension.java [134:348]
void registerAuthenticationMechanism(
@Observes final AfterBeanDiscovery afterBeanDiscovery,
final BeanManager beanManager) {
if (tomcatUserStore.get() != null) {
afterBeanDiscovery
.addBean()
.id(TomEEDefaultIdentityStore.class.getName() + "#" + TomcatUserIdentityStoreDefinition.class.getName())
.beanClass(Supplier.class)
.addType(Object.class)
.addType(new TypeLiteral<Supplier<TomcatUserIdentityStoreDefinition>>() {})
.qualifiers(Default.Literal.INSTANCE, Any.Literal.INSTANCE)
.scope(ApplicationScoped.class)
.createWith(creationalContext -> createTomcatUserIdentityStoreDefinitionSupplier(beanManager));
afterBeanDiscovery
.addBean()
.id(TomEEDefaultIdentityStore.class.getName())
.beanClass(TomEEDefaultIdentityStore.class)
.types(Object.class, IdentityStore.class, TomEEDefaultIdentityStore.class)
.qualifiers(Default.Literal.INSTANCE, Any.Literal.INSTANCE)
.scope(ApplicationScoped.class)
.createWith((CreationalContext<TomEEDefaultIdentityStore> creationalContext) -> {
final AnnotatedType<TomEEDefaultIdentityStore> annotatedType =
beanManager.createAnnotatedType(TomEEDefaultIdentityStore.class);
final BeanAttributes<TomEEDefaultIdentityStore> beanAttributes =
beanManager.createBeanAttributes(annotatedType);
return beanManager.createBean(beanAttributes, TomEEDefaultIdentityStore.class,
beanManager.getInjectionTargetFactory(annotatedType))
.create(creationalContext);
});
}
if (databaseStore.get() != null) {
afterBeanDiscovery
.addBean()
.id(TomEEDatabaseIdentityStore.class.getName() + "#" + DatabaseIdentityStoreDefinition.class.getName())
.beanClass(Supplier.class)
.addType(Object.class)
.addType(new TypeLiteral<Supplier<DatabaseIdentityStoreDefinition>>() {})
.qualifiers(Default.Literal.INSTANCE, Any.Literal.INSTANCE)
.scope(ApplicationScoped.class)
.createWith(creationalContext -> createDatabaseIdentityStoreDefinitionSupplier(beanManager));
afterBeanDiscovery
.addBean()
.id(TomEEDatabaseIdentityStore.class.getName())
.beanClass(TomEEDatabaseIdentityStore.class)
.types(Object.class, IdentityStore.class, TomEEDatabaseIdentityStore.class)
.qualifiers(Default.Literal.INSTANCE, Any.Literal.INSTANCE)
.scope(ApplicationScoped.class)
.createWith((CreationalContext<TomEEDatabaseIdentityStore> creationalContext) -> {
final AnnotatedType<TomEEDatabaseIdentityStore> annotatedType =
beanManager.createAnnotatedType(TomEEDatabaseIdentityStore.class);
final BeanAttributes<TomEEDatabaseIdentityStore> beanAttributes =
beanManager.createBeanAttributes(annotatedType);
return beanManager.createBean(beanAttributes, TomEEDatabaseIdentityStore.class,
beanManager.getInjectionTargetFactory(annotatedType))
.create(creationalContext);
});
}
if (ldapStore.get() != null) {
afterBeanDiscovery
.addBean()
.id(TomEELDAPIdentityStore.class.getName() + "#" + LdapIdentityStoreDefinition.class.getName())
.beanClass(Supplier.class)
.addType(Object.class)
.addType(new TypeLiteral<Supplier<LdapIdentityStoreDefinition>>() {})
.qualifiers(Default.Literal.INSTANCE, Any.Literal.INSTANCE)
.scope(ApplicationScoped.class)
.createWith(creationalContext -> createLdapIdentityStoreDefinitionSupplier(beanManager));
afterBeanDiscovery
.addBean()
.id(TomEELDAPIdentityStore.class.getName())
.beanClass(TomEELDAPIdentityStore.class)
.types(Object.class, IdentityStore.class, TomEELDAPIdentityStore.class)
.qualifiers(Default.Literal.INSTANCE, Any.Literal.INSTANCE)
.scope(ApplicationScoped.class)
.createWith((CreationalContext<TomEELDAPIdentityStore> creationalContext) -> {
final AnnotatedType<TomEELDAPIdentityStore> annotatedType =
beanManager.createAnnotatedType(TomEELDAPIdentityStore.class);
final BeanAttributes<TomEELDAPIdentityStore> beanAttributes =
beanManager.createBeanAttributes(annotatedType);
return beanManager.createBean(beanAttributes, TomEELDAPIdentityStore.class,
beanManager.getInjectionTargetFactory(annotatedType))
.create(creationalContext);
});
}
if (basicMechanism.get() != null) {
afterBeanDiscovery
.addBean()
.id(BasicAuthenticationMechanism.class.getName() + "#" + BasicAuthenticationMechanismDefinition.class.getName())
.beanClass(Supplier.class)
.addType(Object.class)
.addType(new TypeLiteral<Supplier<BasicAuthenticationMechanismDefinition>>() {})
.qualifiers(Default.Literal.INSTANCE, Any.Literal.INSTANCE)
.scope(ApplicationScoped.class)
.createWith(creationalContext -> createBasicAuthenticationMechanismDefinitionSupplier(beanManager));
afterBeanDiscovery
.addBean()
.id(BasicAuthenticationMechanism.class.getName())
.beanClass(BasicAuthenticationMechanism.class)
.types(Object.class, HttpAuthenticationMechanism.class, BasicAuthenticationMechanism.class)
.qualifiers(Default.Literal.INSTANCE, Any.Literal.INSTANCE)
.scope(ApplicationScoped.class)
.createWith((CreationalContext<BasicAuthenticationMechanism> creationalContext) -> {
final AnnotatedType<BasicAuthenticationMechanism> annotatedType =
beanManager.createAnnotatedType(BasicAuthenticationMechanism.class);
final BeanAttributes<BasicAuthenticationMechanism> beanAttributes =
beanManager.createBeanAttributes(annotatedType);
return beanManager.createBean(beanAttributes, BasicAuthenticationMechanism.class,
beanManager.getInjectionTargetFactory(annotatedType))
.create(creationalContext);
});
}
if (formMechanism.get() != null) {
afterBeanDiscovery
.addBean()
.id(FormAuthenticationMechanism.class.getName() + "#" + LoginToContinue.class.getName())
.beanClass(Supplier.class)
.addType(Object.class)
.addType(new TypeLiteral<Supplier<LoginToContinue>>() {})
.qualifiers(Default.Literal.INSTANCE, Any.Literal.INSTANCE)
.scope(ApplicationScoped.class)
.createWith(creationalContext -> createFormLoginToContinueSupplier(beanManager));
afterBeanDiscovery
.addBean()
.id(FormAuthenticationMechanism.class.getName())
.beanClass(FormAuthenticationMechanism.class)
.types(Object.class, HttpAuthenticationMechanism.class, FormAuthenticationMechanism.class)
.qualifiers(Default.Literal.INSTANCE, Any.Literal.INSTANCE)
.scope(ApplicationScoped.class)
.createWith((CreationalContext<FormAuthenticationMechanism> creationalContext) -> {
final AnnotatedType<FormAuthenticationMechanism> annotatedType =
beanManager.createAnnotatedType(FormAuthenticationMechanism.class);
final BeanAttributes<FormAuthenticationMechanism> beanAttributes =
beanManager.createBeanAttributes(annotatedType);
return beanManager.createBean(beanAttributes, FormAuthenticationMechanism.class,
beanManager.getInjectionTargetFactory(annotatedType))
.create(creationalContext);
});
}
if (customMechanism.get() != null) {
afterBeanDiscovery
.addBean()
.id(CustomFormAuthenticationMechanism.class.getName() + "#" + LoginToContinue.class.getName())
.beanClass(Supplier.class)
.addType(Object.class)
.addType(new TypeLiteral<Supplier<LoginToContinue>>() {})
.qualifiers(Default.Literal.INSTANCE, Any.Literal.INSTANCE)
.scope(ApplicationScoped.class)
.createWith(creationalContext -> createCustomFormLoginToContinueSupplier(beanManager));
afterBeanDiscovery
.addBean()
.id(CustomFormAuthenticationMechanism.class.getName())
.beanClass(CustomFormAuthenticationMechanism.class)
.types(Object.class, HttpAuthenticationMechanism.class, CustomFormAuthenticationMechanism.class)
.qualifiers(Default.Literal.INSTANCE, Any.Literal.INSTANCE)
.scope(ApplicationScoped.class)
.createWith((CreationalContext<CustomFormAuthenticationMechanism> creationalContext) -> {
final AnnotatedType<CustomFormAuthenticationMechanism> annotatedType =
beanManager.createAnnotatedType(CustomFormAuthenticationMechanism.class);
final BeanAttributes<CustomFormAuthenticationMechanism> beanAttributes =
beanManager.createBeanAttributes(annotatedType);
return beanManager.createBean(beanAttributes, CustomFormAuthenticationMechanism.class,
beanManager.getInjectionTargetFactory(annotatedType))
.create(creationalContext);
});
}
if (oidcMechanism.get() != null) {
afterBeanDiscovery
.addBean()
.id(OpenIdAuthenticationMechanism.class.getName() + "#" + OpenIdAuthenticationMechanismDefinition.class.getName())
.beanClass(OpenIdAuthenticationMechanismDefinition.class)
.types(Object.class, OpenIdAuthenticationMechanismDefinition.class)
.qualifiers(Default.Literal.INSTANCE, Any.Literal.INSTANCE)
.scope(ApplicationScoped.class)
.createWith(creationalContext -> createOpenIdAuthenticationMechanismDefinition(beanManager));
afterBeanDiscovery.addBean()
.id(OpenIdStorageHandler.class.getName())
.beanClass(OpenIdStorageHandler.class)
.types(Object.class, OpenIdStorageHandler.class)
.qualifiers(Default.Literal.INSTANCE, Any.Literal.INSTANCE)
.scope(ApplicationScoped.class)
.createWith(creationalContext -> {
Bean<OpenIdAuthenticationMechanismDefinition> definitionBean = (Bean<OpenIdAuthenticationMechanismDefinition>)
beanManager.resolve(beanManager.getBeans(OpenIdAuthenticationMechanismDefinition.class));
OpenIdAuthenticationMechanismDefinition definition = (OpenIdAuthenticationMechanismDefinition)
beanManager.getReference(definitionBean, OpenIdAuthenticationMechanismDefinition.class, creationalContext);
return definition.useSession()
? new SessionBasedOpenIdStorageHandler()
: new CookieBasedOpenIdStorageHandler();
});
afterBeanDiscovery.addBean(createBean(TomEEOpenIdContext.class, beanManager));
afterBeanDiscovery.addBean(createBean(OpenIdIdentityStore.class, beanManager));
afterBeanDiscovery.addBean(createBean(OpenIdAuthenticationMechanism.class, beanManager));
}
}