Skip to content

When using @EnableReactiveMethodSecurity there doesn't seem to be a way to mechanism to override or replace the PermissionEvaluator  #15715

Closed
@grantlittle

Description

@grantlittle

Description

When using @EnableReactiveMethodSecurity the "ReactiveAuthorizationManagerMethodSecurityConfiguration" is loaded. This contains a @bean which defines a DefaultMethodSecurityExpressionHandler. This class defines a default DenyAllPermissionEvaluator.

This appears to be result in all methods which use the permission evaluator to be denied.

To Reproduce

@EnableReactiveMethodSecurity
@Configuration
class WebFluxAclConfiguration {

    @Bean
    fun aclPermissionEvaluator(aclService: AclService): AclPermissionEvaluator {
        return AclPermissionEvaluator(aclService)
    }
}

@Service
class TestService {

    @PostAuthorize("hasPermission(returnObject, 'read')")
    fun getDocument(id: Int): Mono<Document> {
        return Mono.just(Document(id))
    }
}

Expected behavior
The DefaultMethodSecurityExpressionHandler should find the AclPermissionEvaluator as an available bean and use it

Sample

https://github.com/grantlittle/security-demo

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions