Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AuditModule needs the SecurityService, which is not available with disabled security #1704

Closed
jonasvoelcker opened this issue Apr 4, 2024 · 7 comments · Fixed by #1706
Closed

Comments

@jonasvoelcker
Copy link
Contributor

Hi @tchiotludo @ebrard, it seems like the Audit-Feature does not support disabled security:

* Property [micronaut.security.enabled] with value [false] should not equal: false

Path Taken: new TopicController() --> TopicController.kafkaWrapper --> $KafkaWrapperRequestScope$Definition$Intercepted.auditModule --> AuditModule.securityService
        at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2181)
        at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForField(AbstractInitializableBeanDefinition.java:1672)
        at org.akhq.modules.$AuditModule$Definition.inject(Unknown Source)
        at org.akhq.modules.$AuditModule$Definition.instantiate(Unknown Source)
        at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2309)
        at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2279)
        at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2291)
        at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3054)
        at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
        at io.micronaut.context.DefaultBeanContext.findOrCreateSingletonBeanRegistration(DefaultBeanContext.java:2956)
        at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2917)
        at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2730)
        at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1729)
        at io.micronaut.context.AbstractBeanResolutionContext.getBean(AbstractBeanResolutionContext.java:89)
        at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2165)
        at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForField(AbstractInitializableBeanDefinition.java:1672)
        at org.akhq.modules.$KafkaWrapperRequestScope$Definition.inject(Unknown Source)
        at org.akhq.modules.$KafkaWrapperRequestScope$Definition$Intercepted$Definition.instantiate(Unknown Source)
        at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2309)
        at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2279)
        at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2291)
        at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3054)
        at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2928)
        at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2730)
        at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1729)
        at io.micronaut.context.AbstractBeanResolutionContext.getBean(AbstractBeanResolutionContext.java:89)
        at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2165)
        at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForField(AbstractInitializableBeanDefinition.java:1672)
        at org.akhq.controllers.$TopicController$Definition.inject(Unknown Source)
        at org.akhq.controllers.$TopicController$Definition.instantiate(Unknown Source)
        at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2309)
        at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2279)
        at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2291)
        at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3054)
        at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
        at io.micronaut.context.DefaultBeanContext.findOrCreateSingletonBeanRegistration(DefaultBeanContext.java:2956)
        at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2917)
        at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2891)
        at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1695)
        at io.micronaut.context.DefaultBeanContext$BeanContextExecutionHandle.getTarget(DefaultBeanContext.java:4247)
        at io.micronaut.context.DefaultBeanContext$BeanContextUnsafeExecutionHandle.invokeUnsafe(DefaultBeanContext.java:4214)
        at io.micronaut.web.router.AbstractRouteMatch.execute(AbstractRouteMatch.java:263)
        at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:74)
        at io.micronaut.http.server.RouteExecutor.executeRouteAndConvertBody(RouteExecutor.java:480)
        at io.micronaut.http.server.RouteExecutor.lambda$callRoute$6(RouteExecutor.java:457)
        at io.micronaut.core.execution.ExecutionFlow.lambda$async$1(ExecutionFlow.java:87)
        at io.micrometer.core.instrument.composite.CompositeTimer.record(CompositeTimer.java:141)
        at io.micrometer.core.instrument.Timer.lambda$wrap$0(Timer.java:196)
        at io.micronaut.core.propagation.PropagatedContext.lambda$wrap$3(PropagatedContext.java:211)
        at io.micrometer.core.instrument.composite.CompositeTimer.record(CompositeTimer.java:141)
        at io.micrometer.core.instrument.Timer.lambda$wrap$0(Timer.java:196)
        at io.micronaut.core.propagation.PropagatedContext.lambda$wrap$3(PropagatedContext.java:211)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: io.micronaut.context.exceptions.NoSuchBeanException: No bean of type [io.micronaut.security.utils.SecurityService] exists. The bean [SecurityService] is disabled because it is within the package [io.micronaut.security] which is disabled due to bean requirements: 
* Property [micronaut.security.enabled] with value [false] should not equal: false

        at io.micronaut.context.DefaultBeanContext.newNoSuchBeanException(DefaultBeanContext.java:2766)
        at io.micronaut.context.DefaultApplicationContext.newNoSuchBeanException(DefaultApplicationContext.java:304)
        at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2735)
        at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1729)
        at io.micronaut.context.AbstractBeanResolutionContext.getBean(AbstractBeanResolutionContext.java:89)
        at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2165)
        ... 54 common frames omitted

Would you please be so kind to find a way to support it soon?

@tchiotludo
Copy link
Owner

@ebrard you could provide a fix please? this is a blocker for the release

@ebrard
Copy link
Contributor

ebrard commented Apr 5, 2024

Sure thing, on it today.

@AlexisSouquiere
Copy link
Collaborator

AlexisSouquiere commented Apr 5, 2024

I did a quick fix. Not the best one for sure but it works 😅

Conditional AuditModule based on the security enabled and audit enabled. Then I need to inject it in the repositories in PostConstruct because Inject annotation will crash if AuditModule doesn't exist

If you have a better idea, please suggest !

@ebrard
Copy link
Contributor

ebrard commented Apr 5, 2024

@AlexisSouquiere can you link your PR? I was going to use PostConstruct as well anyway on security enabled condition so it seems I won't have much of a better idea :)

@ebrard
Copy link
Contributor

ebrard commented Apr 5, 2024

found it sorry.

@ebrard
Copy link
Contributor

ebrard commented Apr 5, 2024

Ok I think I have another idea to make it always work, let me try something.

@ebrard
Copy link
Contributor

ebrard commented Apr 5, 2024

New PR ready for review, thanks to @shaneikennedy's suggestion, the change is minimal.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
4 participants