Spring security 无法注册骆驼路由的安全策略

Spring security 无法注册骆驼路由的安全策略,spring-security,spring-boot,apache-camel,Spring Security,Spring Boot,Apache Camel,我正在尝试将spring安全角色授权策略添加到基于spring引导的apache camel web应用程序中,以保护路由 我使用这个示例作为基础,它不是基于spring boot的 因为,我使用的是基于Spring Boot的apache camel应用程序,我一直在思考如何继续 我想知道如何通过代码添加bean/组件,以注册在一个或多个camel路由中引用的授权策略 添加了SpringBoot后,我不确定如何在Camel xml配置中保留某些组件,并添加其他必需的组件 javaconfig/

我正在尝试将spring安全角色授权策略添加到基于spring引导的apache camel web应用程序中,以保护路由

我使用这个示例作为基础,它不是基于spring boot的

因为,我使用的是基于Spring Boot的apache camel应用程序,我一直在思考如何继续

我想知道如何通过代码添加bean/组件,以注册在一个或多个camel路由中引用的授权策略

添加了SpringBoot后,我不确定如何在Camel xml配置中保留某些组件,并添加其他必需的组件 javaconfig/springboot中的bean组件

因此,我无法将这个非spring引导示例转换为基于ApacheCamel-spring引导的应用程序

有人能帮我找到解决问题的正确方法吗

我在java配置中定义如下

@Bean(name="roleUserEmp")
      public SpringSecurityAccessPolicy roleUserEmp() {
            SpringSecurityAccessPolicy policy = new SpringSecurityAccessPolicy("ROLE_USER_EMP");
            return policy;
       }
另外,我有如下的stacktrace

org.apache.camel.spring.boot.CamelSpringBootInitializationException: org.apache.camel.FailedToCreateRouteException: Failed to create route createEmpFlow at: >>> Policy[ref:roleUserEmp] <<< in route: Route(createEmpFlow)[[From[direct:createEmpFlow]] -> [... because of No bean could be found in the registry for: roleUserEmp of type: org.apache.camel.spi.Policy
    at org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(RoutesCollector.java:94) ~[camel-spring-boot-2.16.2.jar:2.16.2]
    at org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(RoutesCollector.java:38) ~[camel-spring-boot-2.16.2.jar:2.16.2]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:163) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:136) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:380) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:334) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:854) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:140) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:540) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
    at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:347) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:295) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1112) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1101) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
    at com.company.application.EmpApplication.main(EmpApplication.java:48) [classes/:na]
Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route createEmpFlow at: >>> Policy[ref:roleUserEmp] <<< in route: Route(createEmpFlow)[[From[direct:createEmpFlow]] -> [... because of No bean could be found in the registry for: roleUserEmp of type: org.apache.camel.spi.Policy
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1072) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:196) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:947) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3258) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:2981) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:175) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2812) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2808) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2831) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2808) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2777) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(RoutesCollector.java:92) ~[camel-spring-boot-2.16.2.jar:2.16.2]
    ... 15 common frames omitted
Caused by: org.apache.camel.NoSuchBeanException: No bean could be found in the registry for: roleUserEmp of type: org.apache.camel.spi.Policy
    at org.apache.camel.util.CamelContextHelper.mandatoryLookup(CamelContextHelper.java:159) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.model.TransactedDefinition.doResolvePolicy(TransactedDefinition.java:171) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.model.PolicyDefinition.resolvePolicy(PolicyDefinition.java:158) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.model.PolicyDefinition.createProcessor(PolicyDefinition.java:134) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.model.ProcessorDefinition.makeProcessorImpl(ProcessorDefinition.java:534) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:495) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:219) ~[camel-core-2.16.2.jar:2.16.2]
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1069) ~[camel-core-2.16.2.jar:2.16.2]
    ... 27 common frames omitted
谢谢

我的路线如下:

<route id="createEmpFlow ">

    <from uri="direct:createEmpFlow "/>

        <policy ref="roleEmpUser">


        </policy>
</route>
我已经使用引用roleUserEmp的policy camel标记对其进行了包装。

SpringSecurityAccessPolicy不是一个策略。您应该使用SpringSecurityAuthorizationPolicy,并使用accessDecisionManager、authenticationManager和SpringSecurityAccessPolicy对其进行配置

SpringSecurityAccessPolicy不是策略。您应该使用SpringSecurityAuthorizationPolicy,并使用accessDecisionManager、authenticationManager和SpringSecurityAccessPolicy对其进行配置

SpringSecurityAccessPolicy不是路由策略。请显示您正在使用的路由。SpringSecurityAccessPolicy不是路由策略。请出示您正在使用的路线。
@Bean(name="policy")
public SpringSecurityAuthorizationPolicy springPolicy(AuthenticationManager authMgr, AccessDecisionManager accessMgr) {
    SpringSecurityAuthorizationPolicy policy = new SpringSecurityAuthorizationPolicy();

    // .. configure
    policy.setAuthenticationManager(authMgr);
    policy.setAccessDecisionManager(accessMgr);
    policy. setSpringSecurityAccessPolicy(new SpringSecurityAccessPolicy("ROLE_USER_EMP"));
    return policy;
}